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

Python硬编码绘制等边三角形显示异常,求宽高比调整方法

硬编码绘制等边三角形的宽高比调整问题

我希望通过硬编码在Python中绘制等边三角形,不使用特定工具特性。编写的代码如下:

#Geometry of the system

#drawing triangles
#Triangle ABC
#A
#B
#C


# x axis values
a = [1, 41, 81, 1]
# y axis values
b = [1, 70,  1, 1]

#to fix the aspect ratio:

#ax = plt.gca()
#ax.set_aspect(1)

plt.plot(a,b,'-g')
plt.xlabel("$y/\u0394x$", fontsize=12)
plt.ylabel("$z/\u0394x$", fontsize=12)
plt.ylim(0,85)
plt.xlim(0,85)

plt.xticks(size = 12)
plt.yticks(size = 12)

plt.axis('scaled')
#ax.set_aspect('equal')
#plt.figure(figsize=(10,10))

# function to show the plot
plt.show()

我认为三角形各顶点的坐标计算准确,但生成的图形看起来并非等边样式。请问是否需要调整宽高比?具体如何调整?


问题分析

你的顶点坐标计算是对的:A(1,1)、B(41,70)、C(81,1),三边长度基本相等(AC长80,AB、BC约79.75),属于近似等边三角形。图形看起来不等边的核心原因就是坐标轴宽高比不一致——默认情况下Matplotlib会根据窗口尺寸自动拉伸坐标轴,导致y轴和x轴的单位长度视觉上不等,三角形就被压扁/拉长了。

解决方案

必须强制设置坐标轴的等比例显示,具体有两种可靠的方式:

方式1:启用ax.set_aspect('equal')

取消代码中相关注释,确保获取当前轴对象并设置等比例:

ax = plt.gca()
ax.set_aspect('equal')  # 强制x、y轴单位长度视觉一致

方式2:替换plt.axis('scaled')为plt.axis('equal')

plt.axis('equal')会直接强制坐标轴采用等比例缩放,比scaled更直接:

plt.axis('equal')  # 替代原来的plt.axis('scaled')

修改后的完整代码

import matplotlib.pyplot as plt

#Geometry of the system

#drawing triangles
#Triangle ABC
#A
#B
#C


# x axis values
a = [1, 41, 81, 1]
# y axis values
b = [1, 70,  1, 1]

# 固定宽高比
ax = plt.gca()
ax.set_aspect('equal')

plt.plot(a,b,'-g')
plt.xlabel("$y/\u0394x$", fontsize=12)
plt.ylabel("$z/\u0394x$", fontsize=12)
plt.ylim(0,85)
plt.xlim(0,85)

plt.xticks(size = 12)
plt.yticks(size = 12)

# function to show the plot
plt.show()

这样修改后,x轴和y轴的单位长度视觉上完全一致,你的等边三角形就能正确显示了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:05:28