You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Matplotlib散点图从矩形调整为正方形?

解决散点图XY轴范围一致但图表非正方形的问题

你遇到的核心问题是:虽然XY轴的数值范围、刻度步长完全一致,但Matplotlib默认会根据绘图窗口尺寸自动调整轴的显示比例,导致图表呈现矩形。要生成正方形图表,需要强制让坐标轴的显示比例相等(即轴上相同数值差对应的像素长度一致)。

修改后的代码

import numpy as np
import matplotlib.pyplot as plt

# 绘制散点图,复用同一个Axes对象
ax = ctrl_ra.plot.scatter(x='Control', y='Infection(Ra)', color='black', alpha=0.5)
df_sig.plot.scatter(ax=ax, x='Control', y='Infection(Ra)', color='red', alpha=0.5, s=5)

# 设置XY轴刻度(只需设置一次,因为ax2和ax是同一个轴)
ax.set_xticks(np.arange(0,21,5))
ax.set_yticks(np.arange(0,21,5))

# 关键:强制坐标轴等比例,生成正方形图表
ax.set_aspect('equal', adjustable='box')

plt.show()

关键说明

  1. 移除重复刻度设置:因为你用ax=ax参数让df_sig.plot.scatter复用了第一个绘图的Axes对象,重复设置ax2的刻度完全多余,直接操作ax即可。
  2. set_aspect('equal', adjustable='box')的作用:
    • 'equal'指定XY轴的显示比例严格相等,确保1单位的X轴长度和1单位的Y轴长度在屏幕上的像素数一致。
    • adjustable='box'会自动调整轴框形状为正方形,适配等比例的轴设置。

替代方法

如果你习惯用pyplot全局接口,也可以在plt.show()前添加:

plt.axis('square')

这个命令会直接将当前图表设置为正方形,效果和上面的方法一致。

内容的提问来源于stack exchange,提问作者Caroline

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 10:35:20