2017-03-29 24 views
1

xaxisに沿って日付を入れようとするときに効果的な解決法を見つけるのに苦労します。私はインターネットからデータを引き出していません。そのすべては、現時点ではメモ帳ファイルから来ています。私が見つけた解決策の多くは、私にエラーを与え、私がurllibを使って考える情報をすべて描く方法を説明しているYouTubeのビデオを見てきました。matplotlib + tkinterを使ってグラフのx軸に日付を設定する

Fig = Figure(figsize=(10,4), dpi=80) 
a = Fig.add_subplot(111) 
Fig.subplots_adjust(left=0.1, right=0.974, top=0.9, bottom=0.1) 
Fig.patch.set_visible(False) 
a.title.set_text('Graph') 
a.set_xlabel('Date') 
a.set_ylabel('Cost (GBP)') 

上記のコードは、以下のコードを使用して上書きされる前に、グラフを作成する必要があるコードです。

def animate_graph(self, i): 
    pullData = open('financeData.txt','r').read() 
    dataList = pullData.split('\n') 
    xAxisList = [] 
    yAxisList = [] 
    taxList = [] 
    outgoingsList = [] 
    for eachLine in dataList: 
     if len(eachLine) > 1: 
     x, y, o= eachLine.split(',') 
     xAxisList.append(int(x)) 
     yAxisList.append(int(y)) 
     intY = int(y) 
     taxGraphData = intY * TAXRATE 
     taxList.append(taxGraphData) 
     outgoingsList.append(int(o)) 
    a.clear() 
    a.plot(xAxisList, yAxisList, label='Profits line', color='green') 
    a.plot(xAxisList, outgoingsList, label='Outgoings line') 
    a.plot(xAxisList, taxList, label='Tax line') 
    a.title.set_text('Pyraknight Finance Graph') 
    a.set_xlabel('Date') 
    a.set_ylabel('Cost (GBP)') 
    a.legend() 

そして私は

canvas = FigureCanvasTkAgg(Fig, graphFrame) 
canvas.show() 
canvas.get_tk_widget().grid(row=0,column=0,padx=10,pady=10,sticky='nsew') 

self.ani = animation.FuncAnimation (Fig, self.animate_graph, interval=1000) 

これらの下のコードを使用していた私のフレーム上にグラフを配置するには、ライブラリイムインポートする:

#importing tkinter libraries 
import tkinter as tk 
from tkinter.ttk import Combobox,Treeview,Scrollbar 

#importing matplotlib libraries 
import matplotlib.pyplot as plt 
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg 
from matplotlib.figure import Figure 
import matplotlib.animation as animation 
from matplotlib import style 
import matplotlib.dates as mdates 

#Other libraries 
import hashlib 
import sqlite3 
import os 
import time 
import datetime 

は、どのように私は日付を追加するに行きますか私のx軸に?事前のおかげで、ナズ

答えて

1

私は現在、時間を遡って直近の全体時間から数えて、毎日の1つの標識された目盛りをプロットします。この

import datetime 

ax = plt.gca() 
plt.gcf().autofmt_xdate(rotation=30) 
#stepsize = 2592000 # 30 days 
#stepsize = 864000 # 10 days 
stepsize = 86400 # 1 day 
#stepsize = 3600 # 1 hour 
start, end = ax.get_xlim() 
ax.xaxis.set_ticks(np.arange((end - end%3600), start, -stepsize)) 
def timestamp(x, pos): 
     return (datetime.datetime.fromtimestamp(x)).strftime('%Y-%m-%d') 
     #return (datetime.datetime.fromtimestamp(x)).strftime('%m/%d %H:%M') 
ax.xaxis.set_major_formatter(matplotlib.ticker.FuncFormatter(timestamp)) 

これを使用しています。

サンプル:

enter image description here enter image description here

参照:

http://strftime.org/

http://matplotlib.org/api/ticker_api.html

http://matplotlib.org/api/ticker_api.html#matplotlib.ticker.FuncFormatter

http://matplotlib.org/api/figure_api.html#matplotlib.figure.Figure.autofmt_xdate

http://matplotlib.org/devdocs/api/_as_gen/matplotlib.axis.XAxis.set_ticks.html

関連する問題