使用不同大小的数据使条形图的外观更具吸引力
Making more appealing the look of a bar plot with data of different magnitudes
我通过简单地调用 matplotlib 的 bar
方法生成了这个条形图,我的问题是虽然大多数数据都具有相同的数量级,但有几个条太长了以您无法比较的方式挤压其余的条形图。以下是结果:
我想绘制其余数据,就好像较高的条形图不存在一样,而较高的条形图只是到达图的顶部并在其上显示它们的真实值。
可能吗?
为了完整起见,我是这样生成情节的:
def plot_states_meanvar(l, ax):
xs, means, var = zip(*l)
xs = np.array(xs)
for x in xs:
ax.bar(x - 0.25/2, means[x], color = 'b', width = 0.25)
ax.bar(x + 0.25/2, var[x], color = 'g', width = 0.25)
def plot_meanvar(meanvars, title=None):
fig, axs = plt.subplots(ncols=3, nrows=2)
for (modeldata, ax) in zip(meanvars, fig.axes):
plot_states_meanvar(modeldata, ax)
if title is not None:
fig.suptitle(title)
plt.tight_layout()
一个选项是使用 Axes.set_yscale
:
将 y 轴更改为对数刻度
ax.set_yscale('log')
我通过简单地调用 matplotlib 的 bar
方法生成了这个条形图,我的问题是虽然大多数数据都具有相同的数量级,但有几个条太长了以您无法比较的方式挤压其余的条形图。以下是结果:
我想绘制其余数据,就好像较高的条形图不存在一样,而较高的条形图只是到达图的顶部并在其上显示它们的真实值。
可能吗?
为了完整起见,我是这样生成情节的:
def plot_states_meanvar(l, ax):
xs, means, var = zip(*l)
xs = np.array(xs)
for x in xs:
ax.bar(x - 0.25/2, means[x], color = 'b', width = 0.25)
ax.bar(x + 0.25/2, var[x], color = 'g', width = 0.25)
def plot_meanvar(meanvars, title=None):
fig, axs = plt.subplots(ncols=3, nrows=2)
for (modeldata, ax) in zip(meanvars, fig.axes):
plot_states_meanvar(modeldata, ax)
if title is not None:
fig.suptitle(title)
plt.tight_layout()
一个选项是使用 Axes.set_yscale
:
ax.set_yscale('log')