【发布时间】:2019-01-18 16:56:28
【问题描述】:
我正在尝试获得带有误差线的 3D 条形图。 我愿意使用 matplotlib、seaborn 或任何其他 python 库或工具
在 SO 中搜索我发现可以通过绘制几个 2D 图来完成 3D 条形图 (here for example)。这是我的代码:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
dades01 = [54,43,24,104,32,63,57,14,32,12]
dades02 = [35,23,14,54,24,33,43,55,23,11]
dades03 = [12,65,24,32,13,54,23,32,12,43]
df_3d = pd.DataFrame([dades01, dades02, dades03]).transpose()
colors = ['r','b','g','y','b','p']
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
z= list(df_3d)
for n, i in enumerate(df_3d):
print 'n',n
xs = np.arange(len(df_3d[i]))
ys = [i for i in df_3d[i]]
zs = z[n]
cs = colors[n]
print ' xs:', xs,'ys:', ys, 'zs',zs, ' cs: ',cs
ax.bar(xs, ys, zs, zdir='y', color=cs, alpha=0.8)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
我得到了 3D 'ish' 情节。
我的问题是:如何添加误差线?
为方便起见,让我们尝试在所有绘图中添加相同的误差线:
yerr=[10,10,10,10,10,10,10,10,10,10]
如果我在每个“2D”图中添加误差线:
ax.bar(xs, ys, zs, zdir='y', color=cs,yerr=[10,10,10,10,10,10,10,10,10,10], alpha=0.8)
不起作用:
AttributeError: 'LineCollection' object has no attribute 'do_3d_projection'
我也试过补充:
#ax.errorbar(xs, ys, zs, yerr=[10,10,10,10,10,10,10,10,10,10], ls = 'none')
但又是一个错误:
TypeError: errorbar() got multiple values for keyword argument 'yerr'
知道如何获得带有误差线的 3D 绘图条吗?
【问题讨论】:
标签: python matplotlib