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
相关产品推荐
相关产品推荐

