Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从dataframe生成三维条形图_Python_Matplotlib_3d_Bar Chart - Fatal编程技术网

Python 如何从dataframe生成三维条形图

Python 如何从dataframe生成三维条形图,python,matplotlib,3d,bar-chart,Python,Matplotlib,3d,Bar Chart,我的df是这样的: hr slope value 8 s_1 6 10 s_1 2 8 s_2 4 10 s_2 8 我想做一个三维条形图,x轴上有“hr”,y轴上有“value”,z轴上有“slopes” xpos = df['hr'] ypos = df['value'] xpos, ypos = np.meshgrid(xpos+0.25, ypos+0.25) xpo

我的df是这样的:

hr    slope  value   
8      s_1     6     
10     s_1     2     
8      s_2     4     
10     s_2     8    
我想做一个三维条形图,x轴上有“hr”,y轴上有“value”,z轴上有“slopes”

xpos = df['hr']
ypos = df['value']
xpos, ypos = np.meshgrid(xpos+0.25, ypos+0.25)
xpos = xpos.flatten()
ypos = ypos.flatten()
zpos=np.zeros(df.shape).flatten()

dx=0.5 * np.ones_like(zpos)
dy=0.5 * np.ones_like(zpos)
dz=df.values.ravel()

ax.bar3d(xpos,ypos,zpos,dx,dy,dz,color='b', alpha=0.5)
plt.show()
我收到以下错误消息:

ValueError: shape mismatch: objects cannot be broadcast to a single shape
欢迎任何帮助,
提前感谢

有关
bar3d()
的文档,请访问。这是一种解释。官方演示可在以下网址找到:

导入matplotlib.pyplot作为plt
xpos=[1,2,3]#每个条的x坐标
ypos=[0,0,0]#每个条的y坐标
zpos=[0,0,0]#每个条的z坐标
dx=[0.5,0.5,0.5]#每根钢筋的宽度
dy=[0.5,0.5,0.5]#每根钢筋的深度
dz=[5,4,7]#每个杆的高度
图=plt.图()
ax=图添加_子图(111,投影='3d')
ax.bar3d(xpos、ypos、zpos、dx、dy、dz、color='b',alpha=0.5)
plt.show()

出现此错误的原因是xpo、ypos、zpos、dx、dy、dz的长度不同。此外,
dz
的元素包含字符串

下面是我如何重现你的例子

导入matplotlib.pyplot作为plt
作为pd进口熊猫
将numpy作为np导入
df=pd.read\u csv('1.csv')
xpos=df['hr']
ypos=df[“值”]
xpos,ypos=np.meshgrid(xpos+0.25,ypos+0.25)
xpos=xpos.flatte()
ypos=ypos.flatten()
zpos=np.zero(df.shape).flatten()
dx=0.5*np.类(zpos)
dy=0.5*np.类(zpos)
dz=df[['hr','value']].values.ravel()
打印(xpos)
打印(ypos)
打印(zpos)
打印(dx)
打印(dy)
印刷(dz)#[8's_1'6 10's_1'2 8's_2'4 10's_2'8]
打印(len(xpos))#16
打印(len(ypos))#16
打印(len(zpos))#12
打印(len(dx))#12
打印(len(dy))#12
打印(len(dz))#12
图=plt.图()
ax=图添加_子图(111,投影='3d')
ax.bar3d(xpos、ypos、zpos、dx、dy、dz、color='b',alpha=0.5)
plt.show()
1.csv
的内容是

hr,slope,value
8,s_1,6
10,s_1,2
8,s_2,4
10,s_2,8