在Python中绘制可滚动烛台图表时出错
各位,我是新来的!我正在尝试使用python绘制每小时OHLC烛台图,并从CSV文件加载。我的CSV文件包含10000行数据,我只需要特定日期范围内的数据,但日期的数量仍然无法放入单个图表中。因此,我试图通过使用在Python中绘制可滚动烛台图表时出错,python,python-3.x,pandas,slider,matplotlib-widget,Python,Python 3.x,Pandas,Slider,Matplotlib Widget,各位,我是新来的!我正在尝试使用python绘制每小时OHLC烛台图,并从CSV文件加载。我的CSV文件包含10000行数据,我只需要特定日期范围内的数据,但日期的数量仍然无法放入单个图表中。因此,我试图通过使用matplotlib.widgets中的Slider函数来实现图表的滚动。这是我的CSV文件中的部分数据 TimeStamp Open High Low Close 11/7/2017 3:00 1.1395 1.1396 1.139
matplotlib.widgets
中的Slider
函数来实现图表的滚动。这是我的CSV文件中的部分数据
TimeStamp Open High Low Close
11/7/2017 3:00 1.1395 1.1396 1.1394 1.1395
11/7/2017 2:00 1.1394 1.1397 1.1394 1.1395
11/7/2017 1:00 1.1396 1.1399 1.1393 1.1394
11/7/2017 0:00 1.1398 1.1398 1.1396 1.1397
10/7/2017 23:00 1.1398 1.1399 1.1397 1.1397
10/7/2017 22:00 1.1399 1.1400 1.1395 1.1397
10/7/2017 21:00 1.1401 1.1401 1.1397 1.1399
10/7/2017 20:00 1.1401 1.1402 1.1399 1.1401
10/7/2017 19:00 1.1404 1.1404 1.1399 1.1400
10/7/2017 18:00 1.1407 1.1409 1.1404 1.1405
10/7/2017 17:00 1.1397 1.1408 1.1397 1.1408
10/7/2017 16:00 1.1397 1.1401 1.1396 1.1397
10/7/2017 15:00 1.1389 1.1396 1.1386 1.1396
10/7/2017 14:00 1.1393 1.1396 1.1389 1.139
10/7/2017 13:00 1.1393 1.1394 1.1387 1.1391
10/7/2017 12:00 1.139 1.1395 1.1386 1.1392
10/7/2017 11:00 1.1392 1.1393 1.1384 1.139
10/7/2017 10:00 1.1387 1.1395 1.1385 1.1395
下面是我的代码
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime as dt
from matplotlib.finance import candlestick_ohlc
from matplotlib.widgets import Slider
eurusd = pd.read_csv('testing.csv')
eurusd = eurusd[(eurusd['TimeStamp'] >= '10/7/2017 11:00') &
(eurusd['TimeStamp'] <= '11/7/2017 2:00')]
eurusd['TimeStamp'] = eurusd['TimeStamp'].map(lambda d:
mdates.date2num(dt.datetime.strptime(d, '%d/%m/%Y %H:%M')))
fig, ax = plt.subplots()
ax.xaxis_date()
ax.xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%Y %H:%M'))
plt.xticks(rotation = 45)
plt.xlabel("Date")
plt.ylabel("Price")
plt.title("EUR/USD")
candlestick_ohlc(ax,
eurusd[['TimeStamp','Open','High','Low','Close']].values, width = 0.01,
colorup = 'g')
axcolor = 'lightgoldenrodyellow'
axpos = plt.axes([0.2, 0.05, 0.65, 0.03], facecolor = axcolor)
spos = Slider(axpos, 'Position', *eurusd.head(n = 1), *eurusd.tail(n = 1))
def update(val):
pos = spos.val
ax.axis([pos, pos + 10, 18.5, 22.5])
fig.canvas.draw_idle()
spos.on_changed(update)
plt.show()
将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
将matplotlib.dates导入为mdates
将日期时间导入为dt
从matplotlib.finance导入烛台
从matplotlib.widgets导入滑块
eurusd=pd.read\U csv('testing.csv'))
欧元兑美元=欧元兑美元[(欧元兑美元['TimeStamp']>='10/7/2017 11:00')和
(行spos=Slider(axpos,'Position',*eurusd.head(n=1),*eurusd.tail(n=1))中的eurusd['TimeStamp']。
您使用star操作符解包的东西太多了。我尝试过spos=Slider(axpos,'Position',*eurusd['TimeStamp'].head(n=1),*eurusd['TimeStamp'].tail(n=1))
代码正在工作,但滑块似乎没有静止。每当我单击滑块的任何部分,它都会转到最大值。