短租网站建设,万网个人网站备案查询,手机网页编辑器中文版,如何做好宣传推广文章目录 数据导入三维条形图bar3d 数据导入
尽管在matplotlib支持在一个坐标系中绘制多组条形图#xff0c;效果如下 其中#xff0c;蓝色表示中国#xff0c;橘色表示美国#xff0c;绿色表示欧盟。从这个图就可以非常直观地看出#xff0c;三者自2018到2022年的GDP变化… 文章目录 数据导入三维条形图bar3d 数据导入
尽管在matplotlib支持在一个坐标系中绘制多组条形图效果如下 其中蓝色表示中国橘色表示美国绿色表示欧盟。从这个图就可以非常直观地看出三者自2018到2022年的GDP变化情况。但相比之下通过增加轴坐标可以让多组条形图分布在三维坐标中从而更具表现力。
这里仍然以中美欧GDP为例如下表所示单位是万亿美元。
中国美国欧盟201813.8920.5315.98201914.2821.3815.69202014.6921.0615.37202117.8223.3217.19202217.9625.4616.64
首先把这些数值写入python
import numpy as np
years np.arange(2018, 2023)
areas (PRC, EU, USA)
GDPS {PRC: (13.89, 14.28, 14.69, 17.82, 17.96),USA: (20.53, 21.38, 21.06, 23.32, 25.46),EU: (15.98, 15.69, 15.37, 17.19, 16.64),
}三维条形图
由于想在三维坐标轴中绘图所以第一步是新建一个子坐标图并指定projection3d然后在绘图时给定一个额外的y坐标代码如下
import matplotlib.pyplot as plt
import numpy as npax plt.subplot(projection3d)
colors [r, b, g]
yticks [2, 1, 0]
for i,key in enumerate(areas):ax.bar(years, GDPS[key], zsi, zdiry, labelkey, colorcolors[i], alpha0.8)plt.yticks([])plt.legend()
plt.show()其中设置透明度为0.8这样可以让图像在表现时更有层次感。通过设置label对三个地区的颜色进行了标注效果为 bar3d
上图虽然有了3D坐标轴但其实每个数据条仍然是二维的通过bar3d函数可以绘制更加结实紧固的三维方块图其绘图参数如下
bar3d(x, y, z, dx, dy, dz, colorNone, zsortaverage, shadeTrue, lightsourceNone, *args, dataNone, **kwargs)其中x,y,z是方块图的锚点坐标dx, dy, dz是方块的长度、宽度和高度。换言之其绘图逻辑是先指定其绘图的起始位置然后按照给定的长宽高绘制长方体。下面的代码就通过bar3d来绘制中美欧的GDP变化
ax plt.subplot(projection3d)
dx dy np.zeros(5)0.5
x years
z np.zeros_like(x)
for i,key in enumerate(areas):y z idz GDPS[key]ax.bar3d(x,y,z,dx,dy,dz,colorcolors[i], alpha0.8, labelkey)plt.yticks([0.5, 1.5, 2.5], areas)
plt.show()这里对y轴坐标重新进行了映射从而无需使用label也能清晰地看出每组数据所对应的地区效果如下 bar3d函数中其他参数含义如下
zsort z轴排序方案shade 当为True时会显示3D图的阴影效果lightsource 3D条形图的光源