2

我想为我的老板准备一些统计数据。matplotlib 条形图的扁平风格会让那些习惯于 Excel 图表的人看起来很便宜,但为了清楚起见,可能应该避免使用这样的风格。

我不是那么远,但我不知道如何给出正确的条形厚度:

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

row = [0, 0, 0, 22, 0, 0, 4, 16, 2, 0, 4, 4, 12, 26]
length = len(row)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.arange(length)
y = np.zeros(14)
z = np.array(row)
width = 0.8
ax.bar3d(x, y, [0]*length, 0.5, 0.001, z)
ax.set_xticks(x + width/2)
ax.set_xticklabels(titles[2:], rotation=90)
ax.set_yticks(y)
ax.set_zlabel('count')
plt.show()

结果:结果

4

1 回答 1

4

条的粗细由您拥有值的dx, dy参数设置。我确信您注意到的问题是,更改会改变条形的长度(在您的情况下为无标题轴),但 matplotlib 有助于重新调整 y 轴以便数据填充它。这使它看起来很奇怪(我假设这是问题所在,如果不是,抱歉)。ax.bar3d0.5, 0.001dy

为了解决这个问题,您可以使用ax.set_ylim(0, 0.002)(基本上您的 y 值从 0->0.001)设置 y 限制。如果您更改当前为 0dy的 y 值或 y 值bar3d,则您将需要相应地更新限制。

例子:

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

row = [0, 0, 0, 22, 0, 0, 4, 16, 2, 0, 4, 4, 12, 26]
length = len(row)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.bar3d(range(length), [0]*length, [0]*length, 0.5, 0.001, row)

ax.set_ylim(-0.005, 0.005)
plt.show()

例子

于 2013-08-06T12:46:07.357 回答