繁体   English   中英

使用matplotlib.patches校正圆图的长宽比

[英]Correcting aspect ratio of circle plot with matplotlib.patches

我正在使用matplotlib.patches生成一个圆。 但是,生成的圆在视觉上不是圆形的。 它看起来像一个椭圆。 这可能是由于某些纵横比设置所致,我无法使用补丁弄清楚。 如何使用matplotlib.patches模块获得视觉上圆形的圆圈?

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.path as mpath
import matplotlib.lines as mlines
import matplotlib.patches as mpatches
from matplotlib.collections import PatchCollection

fig, ax = plt.subplots()
grid = np.mgrid[0.2:0.8:3j, 0.2:0.8:3j].reshape(2,-1).T

patches = []

circle1 = mpatches.Circle(grid[4], 0.25, linestyle='-.', fill=False)

ax.add_patch(circle1)

ax.grid(color='r', linestyle='-.', linewidth=1)

# plt.subplots_adjust(left=0.1, bottom=0.1, right=0.5, top=0.5,
#                 wspace=0.1, hspace=0.1)
# plt.tight_layout()
plt.show()

如果希望数据坐标中的圆在屏幕坐标中显示为圆形,则需要将轴的纵横比设置为相等。

您可以选择

ax.set_aspect("equal")

让轴缩放。

在此处输入图片说明

或者您可以选择

ax.set_aspect("equal", adjustable="datalim")

让数据扩展

在此处输入图片说明

相反,如果您想直接在屏幕坐标中创建一个圆,则可以使用散点图。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

ax.scatter([.5], [.5], s=10000, edgecolor="k", facecolor="none")
ax.grid(color='r', linestyle='-.', linewidth=1)
ax.axis([0,1,0,1])

plt.show()

在此处输入图片说明

问题是默认figsize中的高度和宽度不相等。 使用与宽度和高度相等的正方形图形尺寸

fig, ax = plt.subplots(figsize=(6,6))

正确的期望输出如下。

或者,您也可以使用以下代码行(在定义ax并在显示之前放入任何位置)以使宽高比等于

ax.set_aspect('equal')

产量

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM