从 matplotlib 条形图中删除空 space
Remove empty space from matplotlib bar plot
我将两个条形图绘制到同一个坐标轴上,其中 x 轴包含从 0 向下的值。但是,我的数据有很大的差距(比如从 0 到 -15),我想删除空的 space,以便轴从 0 到 -15,中间没有 space - 在此图片上显示:
理想情况下,我想对所有空白都执行此操作。 plt.axis('tight')
和 fig.tight_layout()
我都试过了,但都没有用。
编辑:一个小例子的示例代码
keys = [0, -15, -16, -17]
values = [3, 5, 2, 1]
fig, ax = plt.subplots(ncols=1)
fig.tight_layout()
ax.bar(keys, values, 0.8, color='g', align='center')
ax.set_xticks(keys)
plt.setp(ax.xaxis.get_majorticklabels(), rotation=90 )
- 解决该问题的最简单方法是针对
x
绘制 values
,该范围对应于 keys
的 len
,然后更改 xticklabels
.
import matplotlib.pyplot as plt
keys = [0, -15, -16, -17]
values = [3, 5, 2, 1]
fig, ax = plt.subplots()
# create the xticks locations
x = range(len(keys))
ax.bar(x, values, 0.8, color='g', align='center')
# set the ticks and labels
ax.set_xticks(x)
_ = ax.set_xticklabels(keys)
正在排序
keys = [0, -15, -16, -17]
values = [3, 5, 2, 1]
# zip, sort and unpack
keys, values = zip(*sorted(zip(keys, values)))
fig, ax = plt.subplots()
# create the xticks locations
x = range(len(keys))
ax.bar(x, values, 0.8, color='g', align='center')
# set the ticks and labels
ax.set_xticks(x)
_ = ax.set_xticklabels(keys)
我将两个条形图绘制到同一个坐标轴上,其中 x 轴包含从 0 向下的值。但是,我的数据有很大的差距(比如从 0 到 -15),我想删除空的 space,以便轴从 0 到 -15,中间没有 space - 在此图片上显示:
理想情况下,我想对所有空白都执行此操作。 plt.axis('tight')
和 fig.tight_layout()
我都试过了,但都没有用。
编辑:一个小例子的示例代码
keys = [0, -15, -16, -17]
values = [3, 5, 2, 1]
fig, ax = plt.subplots(ncols=1)
fig.tight_layout()
ax.bar(keys, values, 0.8, color='g', align='center')
ax.set_xticks(keys)
plt.setp(ax.xaxis.get_majorticklabels(), rotation=90 )
- 解决该问题的最简单方法是针对
x
绘制values
,该范围对应于keys
的len
,然后更改xticklabels
.
import matplotlib.pyplot as plt
keys = [0, -15, -16, -17]
values = [3, 5, 2, 1]
fig, ax = plt.subplots()
# create the xticks locations
x = range(len(keys))
ax.bar(x, values, 0.8, color='g', align='center')
# set the ticks and labels
ax.set_xticks(x)
_ = ax.set_xticklabels(keys)
正在排序
keys = [0, -15, -16, -17]
values = [3, 5, 2, 1]
# zip, sort and unpack
keys, values = zip(*sorted(zip(keys, values)))
fig, ax = plt.subplots()
# create the xticks locations
x = range(len(keys))
ax.bar(x, values, 0.8, color='g', align='center')
# set the ticks and labels
ax.set_xticks(x)
_ = ax.set_xticklabels(keys)