Making Fill Plot Matplotlib - Error: invalid type promotion
Making Fill Plot Matplotlib - Error: invalid type promotion
我正在尝试使用下面的代码在 Python(我正在使用 spyder IDE)中使用 Matplotlib 创建一个填充图。但是,我收到了代码底部发布的错误。我要绘制的数据框包含沿 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
直接使用值而不是系列:
plt.fill(df3['a'].values, df3['c'].values
您更有可能想要这种类型的情节:
plt.fill_between(df3['a'].values, df3['c'].values)
我正在尝试使用下面的代码在 Python(我正在使用 spyder IDE)中使用 Matplotlib 创建一个填充图。但是,我收到了代码底部发布的错误。我要绘制的数据框包含沿 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
直接使用值而不是系列:
plt.fill(df3['a'].values, df3['c'].values
您更有可能想要这种类型的情节:
plt.fill_between(df3['a'].values, df3['c'].values)