我有以下三个清单。
xx = ['TT', 'AN', 'AP', 'AR', 'AS', 'BR', 'CH', 'CT', 'DN', 'DD', 'DL', 'GA', 'GJ', 'HR', 'HP', 'JK', 'JH', 'KA', 'KL', 'LA', 'LD', 'MP', 'MH', 'MN', 'ML', 'MZ', 'NL', 'OR', 'PY', 'PB', 'RJ', 'SK', 'TN', 'TG', 'TR', 'UP', 'UT', 'WB']
yy = [datetime.date(2020, 5, 27), datetime.date(2020, 5, 28), datetime.date(2020, 5, 29), datetime.date(2020, 5, 30)]
zz = [7246, 0, 134, 0, 101, 68, 1, 4, 0, 0, 792, 1, 376, 76, 26, 162, 7, 135, 40, 1, 0, 237, 2190, 5, 0, 0, 5, 76, 0, 33, 280, 0, 817, 107, 10, 267, 69, 183, 7254, 0, 128, 1, 97, 149, 10, 34, 0, 0, 1024, 1, 367, 123, 8, 115, 6, 115, 85, 20, 0, 192, 2598, 11, 1, 0, 9, 67, 4, 19, 251, 0, 827, 117, 2, 179, 31, 344, 8138, 0, 85, 0, 177, 174, 0, 17, 0, 0, 1105, 0, 372, 217, 14, 128, 82, 248, 62, 0, 0, 192, 2682, 4, 6, 0, 7, 63, 4, 39, 298, 0, 874, 169, 10, 275, 216, 277, 8304, 0, 131, 1, 128, 206, 0, 32, 0, 0, 1163, 1, 412, 202, 18, 177, 42, 141, 58, 3, 0, 246, 2940, 3, 0, 0, 11, 96, 0, 36, 252, 0, 938, 74, 17, 256, 33, 317]
我想在python中使用matplotlib绘制bar3d图,这样x轴将为xx,y轴将为yy以绘制** zz *,即按日期绘制。按照教程,我尝试
dx = np.ones(len(xx))
dy = np.ones(len(yy))
dz = np.ones(len(zz)) # doubt
ax.bar3d(xx, yy, zz, dx, dy, dz, shade=True)
显然,我遇到了错误
ax.bar3d(xx, yy, zz, dx=dx, dy=dy, dz=dz, shade=True)
File "/home/vega/anaconda3/envs/tf01/lib/python3.7/sitepackages/mpl_toolkits/mplot3d/axes3d.py", line 2365, in bar3d
np.atleast_1d(x), y, z, dx, dy, dz)
File "<__array_function__ internals>", line 6, in broadcast_arrays
File "/home/vega/anaconda3/envs/tf01/lib/python3.7/sitepackages/numpy/lib/stride_tricks.py", line 264, in broadcast_arrays
shape = _broadcast_shape(*args)
File "/home/vega/anaconda3/envs/tf01/lib/python3.7/sitepackages/numpy/lib/stride_tricks.py", line 191, in _broadcast_shape
b = np.broadcast(*args[:32])
ValueError: shape mismatch: objects cannot be broadcast to a single shape
我想我不了解针对bar3D图的元组的正确公式。我要求解决任何问题。我扫描了先前的问题,因此我相信这不是重复的问题。
您目前做错了。只需按照此处的官方示例进行操作即可。您需要为每个条形图创建一个x和y点的二维网格。此外,要创建网格,您必须使用数字,然后将刻度标签重置为原始字符串
x = np.arange(len(xx))
y = np.arange(len(yy))
_xx, _yy = np.meshgrid(x, y)
XX, YY = _xx.ravel(), _yy.ravel()
bottom = np.zeros_like(zz)
dx = np.ones(len(XX))
dy = np.ones(len(YY))
ax.bar3d(XX, YY, bottom, dx, dy, zz, shade=True)
ax.set_xticks(range(0, 36, 2))
ax.set_xticklabels(xx[::2])
ax.set_yticks(np.arange(4) + 0.5)
ax.set_yticklabels(yy);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句