如何为 3D 条形图制作误差线? [英] How to make error bars for a 3D Bar graph?

查看:32
本文介绍了如何为 3D 条形图制作误差线?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是编码新手,正在尝试为弗兰肯斯坦制作一个用于研究演示的图表.我想为每个条形值添加一个误差条.任何帮助将非常感激.这是我目前所拥有的:

将 numpy 导入为 np#from mpl_toolkits.mplot3d 导入 Axes3D导入 matplotlib.pyplot 作为 plt从 matplotlib 导入 cm结果=[['29', '16', '15', '9', '20','6'],['61','27','29','29','27','13'],['77','48','51','50','50','8'],['147','105','107','103','103','41'],['146'、'117'、'111'、'105'、'108'、'73']]结果 = np.array(result, dtype=np.int)颜色 = ['r','b','g','y','b','p']fig=plt.figure(figsize=(8, 8), dpi=250)ax1=fig.add_subplot(111, 投影='3d')ax1.set_xlabel('Point in Process', labelpad=10)ax1.set_ylabel('W% Solids', labelpad=10)ax1.set_zlabel('厚度nm')xlabels = np.array(['PED', 'DEV', 'HR1','HR2', 'HR3', '触发器'])xpos = np.arange(xlabels.shape[0])ylabels = np.array(['1','2','3','4','5'])ypos = np.arange(ylabels.shape[0])xposM, yposM = np.meshgrid(xpos, ypos, copy=False)zpos=结果zpos = zpos.ravel()dx=0.5dy=0.5dz=zposax1.w_xaxis.set_ticks(xpos + dx/2.)ax1.w_xaxis.set_ticklabels(xlabels)ax1.w_yaxis.set_ticks(ypos + dy/2.)ax1.w_yaxis.set_ticklabels(ylabels)值 = np.linspace(0.2, 1., xposM.ravel().shape[0])颜色 = cm.rainbow(values)ax1.bar3d(xposM.ravel(), yposM.ravel(), dz*0, dx, dy, dz, color=colors)plt.show()

解决方案

我知道这是一个老问题,但为了将来参考,我认为这可能会有所帮助:

https://matplotlib.org/stable/api/_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html?highlight=3d%20bar#mpl_toolkits.mplot3d.axes3d.Axes3D.errorbar>

这似乎可行:

zuplims = 0.1 # 误差线上限zlolims = 0.1 # 误差线下限ax1.errorbar(x, y, z, 0.2, zuplims=zuplims, zlolims=zlolims, errorevery=estep)

I'm new to coding and am trying to Frankenstein a graph for a research presentation. I would like to add an error bar to each bar value. Any help would be really appreciated. This is what I have so far:

import numpy as np
#from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm

result=[['29', '16', '15', '9', '20','6'],
        ['61', '27', '29', '29', '27','13'],
        ['77', '48', '51', '50', '50','8'],
        ['147', '105', '107','103', '103','41'],
        ['146', '117', '111', '105', '108','73']]

result = np.array(result, dtype=np.int)
colors = ['r','b','g','y','b','p']
fig=plt.figure(figsize=(8, 8), dpi=250)
ax1=fig.add_subplot(111, projection='3d')
ax1.set_xlabel('Point in Process', labelpad=10)
ax1.set_ylabel('W% Solids', labelpad=10)
ax1.set_zlabel('Thickness nm')
xlabels = np.array(['PED', 'DEV', 'HR1','HR2', 'HR3', 'Trigger'])
xpos = np.arange(xlabels.shape[0])
ylabels = np.array(['1','2','3','4','5'])
ypos = np.arange(ylabels.shape[0])

xposM, yposM = np.meshgrid(xpos, ypos, copy=False)

zpos=result
zpos = zpos.ravel()

dx=0.5
dy=0.5
dz=zpos

ax1.w_xaxis.set_ticks(xpos + dx/2.)
ax1.w_xaxis.set_ticklabels(xlabels)

ax1.w_yaxis.set_ticks(ypos + dy/2.)
ax1.w_yaxis.set_ticklabels(ylabels)

values = np.linspace(0.2, 1., xposM.ravel().shape[0])
colors = cm.rainbow(values)
ax1.bar3d(xposM.ravel(), yposM.ravel(), dz*0, dx, dy, dz, color=colors)
plt.show()

解决方案

I know this is an old question, but for future reference I think this might help:

https://matplotlib.org/stable/api/_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html?highlight=3d%20bar#mpl_toolkits.mplot3d.axes3d.Axes3D.errorbar

It seems like this could work:

zuplims = 0.1 # Upper limit of error bar
zlolims = 0.1 # Lowerlimit of error bar
ax1.errorbar(x, y, z, 0.2, zuplims=zuplims, zlolims=zlolims, errorevery=estep)

这篇关于如何为 3D 条形图制作误差线?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆