8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在 matplotlib 中设置 X 和 Y 限制会导致输出中出现线条错误

benwiggy 2月前

23 0

我正在尝试绘制一个圆圈,我希望背景看起来像方格纸,但是当我尝试设置 X 和 Y 限制时,线条变得混乱。我的圆圈的代码是:R1 = (n1 + n2 + n...

我正在尝试绘制一个圆圈,我希望背景看起来像方格纸,但是当我尝试设置 X 和 Y 限制时,线条变得混乱。我的圆圈的代码是:

R1 = (n1 + n2 + n3) / 2

circle1 = (0, 0, R1)
circle2 = (0, R1, R1)
circle3 = (0, 2 * R1, 2 * R1)
circle4 = (0, 4 * R1, 2 * R1)

x2 = circle2[0] + circle2[2] * np.cos(theta)
y2 = circle2[1] + circle2[2] * np.sin(theta)
plt.plot(x2, y2, label='Circle 2')

x3 = circle3[0] + circle3[2] * np.cos(theta)
y3 = circle3[1] + circle3[2] * np.sin(theta)
plt.plot(x3, y3, label='Circle 3')

我设置了 X 和 Y 限制以匹配图纸。不过,使 X 和 Y 限制动态化可以解决这个问题。以下是我的 X 和 Y 限制的代码:

plt.figure(figsize=(6.8, 8.6), dpi=100)
theta = np.linspace(0, 2 * np.pi, 100)
ax = plt.gca()



# Set the limits for x and y axes
ax.set_xlim(-17.5, 17.5)
ax.set_ylim(0, 50)

但我在图中得到的结果如下:

帖子版权声明 1、本帖标题:在 matplotlib 中设置 X 和 Y 限制会导致输出中出现线条错误
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由benwiggy在本站《matplotlib》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 您的问题似乎是无法在所有地方成功创建网格,但是您没有包含创建网格的代码,这使得帮助变得困难。话虽如此,有一个

  • 您可能需要更改 n1/n2/n3 的值来获取圆,并更改网格间距,但这里有一个示例,您使用自定义图形限制来生成网格 + 刻度。基本上,它会根据您设置的最小/最大值为您的轴生成间隔为 1 和 0.5 的刻度和线。

    import numpy as np
    import matplotlib.pyplot as plt
    
    n1 = 2
    n2 = 3
    n3 = 4
    
    plt.figure(figsize=(6.8, 8.6), dpi=100)
    theta = np.linspace(0, 2 * np.pi, 100)
    
    R1 = (n1 + n2 + n3) / 2
    
    circle1 = (0, 0, R1)
    circle2 = (0, R1, R1)
    circle3 = (0, 2 * R1, 2 * R1)
    circle4 = (0, 4 * R1, 2 * R1)
    
    x2 = circle2[0] + circle2[2] * np.cos(theta)
    y2 = circle2[1] + circle2[2] * np.sin(theta)
    plt.plot(x2, y2, label='Circle 2')
    
    x3 = circle3[0] + circle3[2] * np.cos(theta)
    y3 = circle3[1] + circle3[2] * np.sin(theta)
    plt.plot(x3, y3, label='Circle 3')
    
    # Set the limits for x and y axes + grid
    ax = plt.gca()
    
    x_min = -17
    x_max = 17
    ax.set_xlim(x_min, x_max)
    ax.xaxis.set_inverted(True)
    x_ticks = np.arange(x_min, x_max, 1)
    little_x_ticks = np.arange(x_min, x_max, 0.5)
    ax.set_xticks(x_ticks)
    ax.set_xticks(little_x_ticks, minor=True)
    
    y_min = 0
    y_max = 50
    ax.set_ylim(y_min, y_max)
    ax.yaxis.set_inverted(True)
    y_ticks = np.arange(y_min, y_max, 1)
    little_y_ticks = np.arange(y_min, y_max, 0.5)
    ax.set_yticks(y_ticks)
    ax.set_yticks(little_y_ticks, minor=True)
    
    plt.grid(which='both', axis='both')
    

    结果是这样的:

返回
作者最近主题: