Matplotlib:更改图上两个 x 轴刻度线之间的距离

Matplotlib: Change distance between two x-axis tick marks on plot

我正在尝试为两个标签的一堆概率值创建一个散点图,但是当我绘制它时,标签显示为左对齐和右对齐,所以有一堆空 space -之间。有没有办法缩小两个 x 轴刻度线之间的差距?

这是我使用的代码:

x = [1,2]
y = [[0.1, 0.6, 0.9],[0.5,0.7,0.8]]
colors = ['magenta', 'blue']
plt.title("Algorithm comparison - p-values")
for xe, ye,c in zip(x, y,colors):
    plt.scatter([xe] * len(ye), ye, c=c)
plt.xticks([1,2])
plt.axes().set_xticklabels(['Part 1','Part 2'],rotation = 45)

提前致谢!如果我遗漏了任何重要的细节,请告诉我。

我已经尽可能地重写了代码。主要问题是您生成了两个轴对象 - 一个带有 for xe, ye,c in zip(x, y,colors): plt.scatter([xe] * len(ye), ye, c=c),另一个带有 plt.axes().set_xticklabels(['Part 1','Part 2'],rotation = 45)。您可以直接使用 plt.xticks():

提供标签
import matplotlib.pyplot as plt

x = [1,2]
y = [[0.1, 0.6, 0.9],[0.5,0.7,0.8]]
colors = ['red', 'blue']
plt.title("Algorithm comparison - p-values")
for xe, ye,c in zip(x, y,colors):
    plt.scatter([xe] * len(ye), ye, c=c)
plt.xticks([1,2], ['Part 1','Part 2'], rotation = 45)

plt.show()

最好在开始时创建一个轴对象并使用该轴对象绘制所有内容:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
x = [1,2]
y = [[0.1, 0.6, 0.9],[0.5,0.7,0.8]]
colors = ['red', 'blue']
ax.set_title("Algorithm comparison - p-values")
for xe, ye, c in zip(x, y, colors):
    ax.scatter([xe] * len(ye), ye, c=c)
ax.set_xticks(x)
ax.set_xticklabels(['Part 1','Part 2'],rotation = 45)
ax.set_xlim(0.5, 2.5)
plt.show()

示例输出:

有关 object-oriented 方法和 plt 接口之间差异的更多解释,请参见 and the matplotlib documentation