使用MultipleLocator时如何将Matplotlib X轴限制在100%而非超出至105%
解决X轴超出100%的问题
直接在设置刻度定位器后,手动指定X轴的右边界为100即可,既能保留5为步长的刻度,又能限制轴范围不超过100%。
修改后的完整代码:
import matplotlib.pyplot as plt import numpy as np import pandas as pd import matplotlib as mpl fig, ax = plt.subplots(figsize=(10, 5)) np.random.seed(1) df = pd.DataFrame( { "x": np.random.randint(0, 4, size=(1000)), "y": np.random.randint(0, 4, size=1000), } ) pd.crosstab(df["x"], df["y"], normalize="columns").mul(100).T.plot.barh( stacked=True, ax=ax ) ax.xaxis.set_major_locator(mpl.ticker.MultipleLocator(base=5)) # 强制设置X轴右边界为100 ax.set_xlim(right=100) plt.show()
原理说明
MultipleLocator会自动调整坐标轴范围,确保最后一个刻度是步长(此处为5)的整数倍。即便数据最大值是100,Matplotlib仍可能额外扩展一个刻度到105以满足定位器规则。通过ax.set_xlim(right=100)手动锁定右边界,就能截断多余刻度,让X轴停在100%。
内容的提问来源于stack exchange,提问作者baxx
相关产品推荐
相关产品推荐

