ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

matplotlib bar3d画3d柱状图

2021-08-02 12:05:01  阅读:652  来源: 互联网

标签:flat set color list len 柱状图 bar3d matplotlib ax


Rendering

bar3d效果:

  • 3D 柱状图
  • 按行/列涂颜色
  • 柱加阴影、描黑边
  • 自定义座标轴名、刻度标签、范围

Code

import numpy as np
import matplotlib
matplotlib.rcParams['font.family'] = 'Times New Roman'
matplotlib.rcParams['mathtext.default'] = 'regular'
import matplotlib.pyplot as plt
# from mpl_toolkits.mplot3d import Axes3D


COLOR = ["blue", "cornflowerblue", "mediumturquoise", "goldenrod", "yellow"]
lambda1 = lambda2 = [10 ** x for x in range(-2, 3)]


# x, y: position
x = list(range(len(lambda1)))
y = list(range(len(lambda2)))
x_tickets = [str(_x) for _x in lambda1]
y_tickets = [str(_x) for _x in lambda2]

# acc = np.random.rand(len(x), len(y))
acc = np.arange(len(x) * len(y)).reshape(len(x), len(y)) + 1
acc = acc / acc.max()
xx, yy = np.meshgrid(x, y)
# print(xx)
# print(yy)
color_list = []
for i in range(len(x)):
    c = COLOR[i]
    color_list.append([c] * len(y))
color_list = np.asarray(color_list)
# print(color_list)
xx_flat, yy_flat, acc_flat, color_flat = \
    xx.ravel(), yy.ravel(), acc.ravel(), color_list.ravel()
# print(xx_flat)
# print(yy_flat)


# fig, ax = plt.subplots(projection="3d")
fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
ax.bar3d(xx_flat - 0.35, yy_flat - 0.35, 0, 0.7, 0.7, acc_flat,
    color=color_flat,  # 颜色
    edgecolor="black",  # 黑色描边
    shade=True)  # 加阴影

# 座标轴名
ax.set_xlabel(r"$\lambda_1$")
ax.set_ylabel(r"$\lambda_2$")
ax.set_zlabel("ACC")

# 座标轴范围
ax.set_zlim((0, 1.01))

# 座标轴刻度标签
# 似乎要 `set_*ticks` 先,再 `set_*ticklabels`
# has to call `set_*ticks` to mount `ticklabels` to corresponding `ticks` ?
ax.set_xticks(x)
ax.set_xticklabels(x_tickets)
ax.set_yticks(y)
ax.set_yticklabels(y_tickets)

# 保存
plt.tight_layout()
fig.savefig("bar3d.png", bbox_inches='tight', pad_inches=0)
plt.close()

References

  1. Demo of 3D bar charts
  2. 3D plots as subplots
  3. matplotlib实现三维柱状图
  4. 第三十一章 3D 条形图
  5. Grouped bar chart with labels
  6. apply color map to mpl_toolkits.mplot3d.Axes3D.bar3d
  7. List of named colors
  8. How to make bar3d plot with transparent faces and non-transparent edges?

标签:flat,set,color,list,len,柱状图,bar3d,matplotlib,ax
来源: https://blog.csdn.net/HackerTom/article/details/119322168

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有