如何制作matplotlib散点图正方形?

tom*_*sen 3 python plot matplotlib scatter-plot aspect-ratio

在gnuplot中,我可以这样做以获得平方图:

set size square
Run Code Online (Sandbox Code Playgroud)

matplotlib中的等效项是什么?我已经试过了:

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
plt.rcParams['backend'] = 'TkAgg'
x = [0, 0.2, 0.4, 0.6, 0.8]
y = [0, 0.5, 1, 1.5, 2.0]
colors = ['k']*len(x)
plt.scatter(x, y, c=colors, alpha=0.5)
plt.axes().set_aspect('equal', adjustable='datalim')
plt.xlim((0,2))
plt.ylim((0,2))
plt.grid(b=True, which='major', color='k', linestyle='--')
plt.savefig('{}.png'.format(rsID), dpi=600)
plt.close()
plt.clf()
Run Code Online (Sandbox Code Playgroud)

我得到一个正方形网格,但是情节本身不是正方形。如何使x范围从0变到2,并使绘图呈正方形? 在此处输入图片说明

ely*_*ase 5

您可以这样做:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
x = [0, 0.2, 0.4, 0.6, 0.8]
y = [0, 0.5, 1, 1.5, 2.0]
colors = ['k']*len(x)
ax.scatter(x, y, c=colors, alpha=0.5)
ax.set_xlim((0,2))
ax.set_ylim((0,2))
x0,x1 = ax.get_xlim()
y0,y1 = ax.get_ylim()
ax.set_aspect(abs(x1-x0)/abs(y1-y0))
ax.grid(b=True, which='major', color='k', linestyle='--')
fig.savefig('test.png', dpi=600)
plt.close(fig)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 至少现在(2020 年 2 月),您可以使用“set_aspect('equal')”来获得“从数据到 x 和 y 的绘图单位的相同缩放比例”,以提供相同的结果。 (3认同)