私は会社の株価履歴の簡単なスクレーパーを作っています。私が持っている問題は、私がグラフを作るためにmatplotlibを使うとき、ほとんどのx軸ラベル(この場合は日付)が欠けていることです。 pandas/matplotlibにすべてのラベルを表示させるにはどうすればいいですか?panda/matplotlibですべてのx軸ラベルを表示する方法
import pandas as pd
import urllib.request
from bs4 import BeautifulSoup
import matplotlib.pyplot as plt
#open url and make soup
quote_url = "http://www.nasdaq.com/symbol/atnx/historical"
page = urllib.request.urlopen(quote_url)
soup = BeautifulSoup(page, 'html.parser')
#grab all the stock price data (except volume) for the last 2 weeks
trs = soup.find('div', attrs={'id': 'historicalContainer'})\
.find('tbody').find_all('tr')
temp_list = list()
for tr in trs:
for td in tr:
if td.string.strip():
temp_list.append(td.string.strip())
list_of_list = [temp_list[i:i+5] for i in range(0, len(temp_list), 6)]
#only take data from the last 2 weeks for the sake of simplicity
list_of_list = list_of_list[:14]
data_dict = {sublist[0]: [float(n.replace(',', '')) for n in sublist[1:len(sublist)]] for sublist in list_of_list}
#create a pandas DataFrame for stock prices
df = pd.DataFrame(data_dict)
df.rename({0: 'Open', 1: 'High', 2: 'Low', 3: 'Close/Last'}, inplace=True)
#Transpose dataframe
df= df.T
#plot with matplotlib (most x labels are missing here)
df.plot()
plt.show()
ありがとうございます。
あなたが持っているもののプロット、およびいくつかのダミーデータを含め、MCVEを与えます。 – jonnybazookatone
ここではmatplotlibを直接使用していませんが、pandas 'df.plot()'は使用していません。これは、あなたがティッカーラベルを巧みにコントロールすることはできません。私はあなたが「すべてのラベルを表示する」という意味を知らないのですが、通常、各データポイントごとに1つのラベルを表示するスペースよりもずっと多くのデータを持っています。しかし、適切な 'matplotlib.dates'ロケータを使用することでtickの頻度を増やすことができます。出発点として、[matplotlibページの例題](https://matplotlib.org/examples/api/date_demo.html)があります。 – ImportanceOfBeingErnest
[この質問](https://stackoverflow.com/questions/35663705/how-to-plot-time-on-y-axis-in-hm-format-in-matplotlib)。 – ImportanceOfBeingErnest