如何解决Matplotlib散点图x轴区域标签相互重叠的问题

解决x轴标签重叠的常用方案
以下是可直接复用的处理方法,可根据你的实际场景组合使用:
- 方案1:加宽画布、增大x轴分布范围
调大画布宽度直接给x轴留出更多显示空间,同时手动设置x轴上下限让两端预留留白,避免边缘标签被截断:import matplotlib.pyplot as plt # 第一个参数为画布宽度,第二个为高度,可根据标签数量灵活调整 plt.figure(figsize=(14, 7)) # 你的区域标签列表示例:regions = ['欧洲', '南亚', '东亚', '北美', '南美', '非洲', '大洋洲'] regions = [你的区域标签列表] # 左右各预留0.5单位的空白,让标签分布更均匀 plt.xlim(left=-0.5, right=len(regions)-0.5) - 方案2:旋转x轴标签
不需要调整画布尺寸的前提下,旋转标签可大幅降低重叠概率,设置ha='right'可以让标签和刻度对齐更美观:# rotation可按需调整为30/45/60度 plt.xticks(ticks=range(len(regions)), labels=regions, rotation=45, ha='right') - 方案3:缩小标签字体大小
若标签数量特别多,可适当调小字体节省显示空间:plt.xticks(fontsize=9) - 方案4:调整底部边距避免标签被截断
旋转标签后如果底部标签显示不全,可调整画布底部留白:plt.subplots_adjust(bottom=0.25)
完整可运行示例代码
import matplotlib.pyplot as plt import numpy as np # 模拟散点图数据 regions = ['欧洲', '南亚', '东亚', '北美', '南美', '非洲', '大洋洲', '中亚', '东南亚', '中东'] x = np.arange(len(regions)) y = np.random.randint(10, 100, size=len(regions)) # 绘图流程 plt.figure(figsize=(14, 7)) plt.scatter(x, y, s=100, c='steelblue') # 配置x轴属性 plt.xticks(ticks=x, labels=regions, rotation=45, ha='right', fontsize=10) plt.xlim(left=-0.5, right=len(regions)-0.5) # 调整底部边距防止标签截断 plt.subplots_adjust(bottom=0.25) # 其他图表配置 plt.ylabel('对应数值') plt.title('各区域指标散点分布') plt.show()
内容的提问来源于stack exchange,提问作者T.KHAN
相关产品推荐
相关产品推荐

