画三维直方图

#encoding=utf-8
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
import random

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
#x = [-5,-4,-3,-3,-3,-3,3,4,2,2,2,2,2,1,1,1,1,1,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-2,-2,-2,-2,-2]  #x coordinates of each bar
y = [6,4,7,6,5,4,5,6,3,4,5,6,7,3,4,5,6,7,6,5,4,3,2,7,6,5,4,3,2,7,6,5,4,3]  #y coordinates of each bar
#z = [0,0,1,0,0,0,0.5,1,0,0,0,1,1,0,0,0.142,0.167,1,0.76,0,0,0,0,1,0.909,0,0,0,0,1,0.67,0,0,0]  #z coordinates of each bar
dx = [1, 1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]  #width of each bar
dy = [1, 1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]  #depth of each bar
#dz = [0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]        #height of each bar
dp=[0,0,1,0,0,0,0.5,1,0,0,0,1,1,0,0,0.142,0.167,1,0.76,0,0,0,0,1,0.909,0,0,0,0,1,0.67,0,0,0]
#x1=np.array(x)
#y1=np.array(y)
#z1=np.array(z)
#ax.plot_surface(x, y, z, color='b')
x=[-5,-4,-4,-4,-4,-3,-3,-3,-3,-3,-2,-2,-2,-2,-2,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,4,4,4,5,6,7,8]
y=[4,3,4,5,6,3,4,5,6,7,3,4,5,6,7,2,3,4,5,6,7,2,3,4,5,6,7,8,1,3,4,5,6,7,2,3,4,5,6,7,3,5,7,4,6,5,5,6,7,8]
dz=[0,0,0,25,0,0,50,0,50,100,0,0,0,68.42105263,100,0,0,6.25,30,91.42857143,100,0,0,6.666666667,16.66666667,82.85714286,100,100,0,0,0,9.090909091,52.38095238,100,2.631578947,0,0,28.57142857
,100,100,3.015075377,50,100,4.961832061,100,66.66666667,20.59308072,77.13097713,99.03381643,100]
bottom=np.zeros_like(x)
#color=plt.cm.Set2(random.choice(range(8)))#random.choice()从里面随机选出一个值,这样每次画的图形颜色就不一样了。
    #ax.bar(xs,ys,zs=z,zdir='y',color=color,alpha=0.8)
for i in range(len(x)):
    color = plt.cm.Set2(random.choice(range(2)))  # random.choice()从里面随机选出一个值,这样每次画的图形颜色就不一样了。
    #ax.bar(xs, ys, zs=z, zdir='y', color=color, alpha=0.8)
    ax.bar3d(x[i], y[i], bottom[i], dx[i], dy[i], dz[i], color=color, zsort='average', alpha=0.8)

ax.set_xlabel('DIF')
ax.set_ylabel('AVG')
ax.set_zlabel('Pro')

plt.show()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MATLAB中,可以使用函数bar3来绘制三维直方图。与二维直方图相似,只需将bar替换为bar3即可。以下是一些常用的用法: 1. 绘制长度为y的三维直方图(宽度系统自动匹配): bar3(y); 2. 绘制长度为y,宽度为width的三维直方图: bar3(y, width); 3. 在x处生成长度为y的三维直方图: bar3(x, y); 4. 在x处生成长度为y,宽度为width的三维直方图: bar3(x, y, width); 5. 生成两组高度分别为a b c和d e f,宽度都为0.5的三维直方图: y = \[a, b, c; d, e, f\]; bar3(y, 0.5); 6. 将两组三维直方图绘制在一起: y = \[a, b, c; d, e, f\]; bar3(y, 'grouped'); 7. 将两组三维直方图堆叠在一起: y = \[a, b, c; d, e, f\]; bar3(y, 'stack'); 8. 将三维直方图横着放置: bar3h(y); 此外,如果需要绘制带渐变色的三维彩色柱状图,可以使用自定义函数scatterbar。该函数可以根据用户指定的散点数据绘制柱状图,并支持渐变色。\[2\] 如果需要将三维直方图放置在多重子图中,可以使用subplot函数来实现。例如,可以使用subplot(2,2,1)将三维直方图放置在2x2的子图中的第一个位置。\[3\] #### 引用[.reference_title] - *1* *3* [Matlab绘制三维直方图、饼图](https://blog.csdn.net/zhangkaikai36/article/details/123435891)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [MATLAB小技巧之十:利用MATLAB绘制三维彩色柱状图[转载]](https://blog.csdn.net/weixin_36462703/article/details/115809480)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值