使用python中的matplotlib在3个轴上使用日期,字符串和数字进行3D条形图绘制

维加

我有以下三个清单。

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用python绘制3D条形图

如何在matplotlib中绘制伪3d条形图?

在Matlab中在网格上绘制3D条形图

Python:如何使用matplotlib在python中绘制条形图?

使用matplotlib在python中绘制漂亮的条形图

使用Matplotlib.pyplot在python中绘制条形图

更改使用 amcharts 绘制的 3D 条形图的标签和标题的字体颜色

使用D3 JS绘制条形图

使用 Python 在 3D 轴上绘制直方图

在Matlab的地图上绘制3d条形图

用Matlab绘制3D条形图

如何使用C3创建字符串数据的堆积条形图?

matplotlib:在3d条形图上反转y轴

如何在 d3 中绘制镜像 x 轴(倒置)条形图?

python dataframe 3d条形图轴标签和刻度的重叠问题

使用Python库绘制共享相同y轴的两个水平条形图

如何使用matplotlib在python中绘制3D密度图

在python中使用matplotlib绘制多个分组的条形图

使用C3在x轴上使用单独的列制作简单的条形图

如何使用 matplot lib 调整 3D 条形图的条形宽度

带有错误栏的Python Matplotlib 3D条形图

如何使用matplotlib从三个不同的数据框中绘制条形图?

使用d3绘制轮廓图(条形图)

使用D3.js的3D条形图的透视问题

如何在python中使用matplotlib在python中绘制带有标签的简单条形图?

使用Coreplot布置条形图,并使用labelFormatter在X轴上显示日期。但是条形图没有显示

使用 Pandas/matplotlib.pyplot 在 python 中绘制堆叠条形图

使用python从csv文件中绘制堆积的条形图

使用旋转的xlabel在Seaborn Python中绘制条形图