2017-11-30 8 views
-1

私は会社の株価履歴の簡単なスクレーパーを作っています。私が持っている問題は、私がグラフを作るために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() 

ありがとうございます。

+0

あなたが持っているもののプロット、およびいくつかのダミーデータを含め、MCVEを与えます。 – jonnybazookatone

+0

ここではmatplotlibを直接使用していませんが、pandas 'df.plot()'は使用していません。これは、あなたがティッカーラベルを巧みにコントロールすることはできません。私はあなたが「すべてのラベルを表示する」という意味を知らないのですが、通常、各データポイントごとに1つのラベルを表示するスペースよりもずっと多くのデータを持っています。しかし、適切な 'matplotlib.dates'ロケータを使用することでtickの頻度を増やすことができます。出発点として、[matplotlibページの例題](https://matplotlib.org/examples/api/date_demo.html)があります。 – ImportanceOfBeingErnest

+0

[この質問](https://stackoverflow.com/questions/35663705/how-to-plot-time-on-y-axis-in-hm-format-in-matplotlib)。 – ImportanceOfBeingErnest

答えて

-1

pandas.DataFrame.plotの書式設定は、私の経験ではほとんど完璧ではありません。この関数は、軸のnp.arrayを返します。後で各軸にset_xlabel()を使用することができます。

プロヒント:軸が日付である場合、私はまた、(autofmt_xdateを使用することをお勧めします)

+0

答えを下降させる場合は、答えが適切でない理由について少なくともヒントを与えることが慣例です。質問にはMCVEがないので、誤解が生じる可能性があります。 set_xlabel()のset_xticklabels()をaxisラベルと言っていたので、したかったのですか? – Keith

関連する問題