一个带有代码的 Dataframe 的单独的matplotlib图

h9vpoimq  于 2023-05-23  发布在  其他
关注(0)|答案(1)|浏览(134)

我正试图显示一个包含自动收报机的 Dataframe 的单独绘图。dataframe有5个代码,即来自纳斯达克的5家公司使用yahoofinance。
下面是all_data Dataframe 的样子:

signal  short_mavg   long_mavg  positions
Ticker Date                                                 
AAPL   2020-01-02     0.0   75.087502   75.087502        NaN
       2020-01-03     0.0   74.722500   74.722500        0.0
       2020-01-06     0.0   74.798332   74.798332        0.0
       2020-01-07     0.0   74.748125   74.748125        0.0
       2020-01-08     0.0   74.958000   74.958000        0.0

打印图的代码如下所示

fig = plt.figure()

# Add a subplot and label for y-axis
ax1 = fig.add_subplot(111,  ylabel='Price in $')

# Plot the closing price
all_data['Close'].plot(ax=ax1, color='r', lw=2.)

# Plot the short and long moving averages
signals[['short_mavg', 'long_mavg']].plot(ax=ax1, lw=2.)

# Plot the buy signals
ax1.plot(signals.loc[signals.positions == 1.0].index, 
         signals.short_mavg[signals.positions == 1.0],
         '^', markersize=10, color='m')

# Plot the sell signals
ax1.plot(signals.loc[signals.positions == -1.0].index, 
         signals.short_mavg[signals.positions == -1.0],
         'v', markersize=10, color='k')
         
# Show the plot
plt.show()

错误出现在ax1.plot(signals.loc[signals.positions == 1.0].index, signals.short_mavg[signals.positions == 1.0], '^', markersize=10, color='m')
误差为TypeError: 'value' must be an instance of str or bytes, not a tuple
帮助创建每个股票代码的个人图表将不胜感激。谢谢!!!

l7mqbcuq

l7mqbcuq1#

我不认为这是matplotlib的问题。看起来df有多个索引。
在这种情况下,您应该首先选择正确的索引,而不是使用signals.loc[signals.positions == -1.0].index作为x坐标,您可以使用signals.loc[signals.positions == -1.0].index.get_level_values(1)(检查这实际上是日期)。
同样,在绘图之前,尝试打印您试图绘制的值,以查看是否有奇怪的东西。例如,你要确保x和y实际上是列表,一系列数字,而不是元组的列表。

相关问题