我正在尝试使用Python中的Matplotlib(我正在使用spyder IDE)使用下面的代码创建填充图。但是,我收到代码底部发布的错误。我要绘制的数据帧包含沿x轴的日期,然后是一系列y值(我创建了样本数据帧以查看错误是否被重现,以防我的数据帧出现问题)。
这似乎让我陷入困境,我正试图从头开始(并访问了matplotlib网站,该网站发布在代码中的评论中)。
我是Python和Matplotlib的新手,也许我只是缺少一些基本的东西。我需要为我正在进行的工作添加大量带有日期时间x轴的图表,所以如果有任何其他功能我应该注意,请告诉我,因为我们将不胜感激!
提前致谢!
import pandas as pd
import numpy as np
import datetime as dt
import matplotlib.pyplot as plt
data1 = [{'a':dt.datetime(2015,1,1,12,0,0), 'b':1},{'a':dt.datetime(2015,1,1,13,0,0), 'b':2},{'a':dt.datetime(2015,1,1,14,0,0), 'b':3}]
df1 = pd.DataFrame(data1)
data2 = [{'a':dt.datetime(2015,1,1,12,0,0), 'c':9},{'a':dt.datetime(2015,1,1,13,0,0), 'c':8},{'a':dt.datetime(2015,1,1,14,0,0), 'c':7}]
df2 = pd.DataFrame(data2)
df3 = pd.merge(df1, df2, how = 'left', on = 'a')
plt.fill(df3['a'], df3['c'])
plt.show()
"""
used this example code from Fill Demo on page http://matplotlib.org/users/screenshots.html
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 1)
y = np.sin(4 * np.pi * x) * np.exp(-5 * x)
plt.fill(x, y, 'r')
plt.grid(True)
plt.show()
"""
File "/Applications/anaconda/lib/python3.5/site-packages/numpy/core/shape_base.py", line 280, in hstack
return _nx.concatenate(arrs, 1)
TypeError: invalid type promotion
答案 0 :(得分:5)
直接使用值代替系列:
plt.fill(df3['a'].values, df3['c'].values
你更可能想要这种情节:
plt.fill_between(df3['a'].values, df3['c'].values)