【问题标题】:Draw slanted line pattern in python [closed]在python中绘制斜线图案[关闭]
【发布时间】:2020-07-16 20:51:12
【问题描述】:

我创建了一个代码,将黑色箭头放在黄线上,我是通过坐标来做的,问题是另一条线不能正常工作。

import matplotlib.pyplot as plt
import numpy as np

coordinates = [['Row', 0, 6.0, 5, 8.5, 0.42],
               ['Row', 5, 8.5, 10, 6.0, 0.30]]

fig = plt.figure()
for i in range(len(coordinates)): 

    xo = coordinates[i][1]
    yo = coordinates[i][2]
    xf = coordinates[i][3]
    yf = coordinates[i][4]

    wd = abs(coordinates[i][5])
    steps = 1

    plt.plot((xo, xf), (yo, yf), color='orange', linewidth=5) 
    
    plt.plot((10, 10), (9, 9)) 
    plt.plot(2.5, 2.5)
    
    for arr in np.arange(xo, xf + 1e-9, steps):
        slope = (yf-yo) / (xf-xo)
        yep = slope * arr + yo
        plt.arrow(arr, yep + wd, 0, -wd, color='black', linewidth=1)        
        
plt.show() 

也许循环使用不好,但逻辑是它们是根据直线的斜率方程定位的。

为了说明,我有下图。

我努力做到这一点。

最好的问候

【问题讨论】:

    标签: python python-3.x matplotlib


    【解决方案1】:

    你还需要从arr中减去xo

    import matplotlib.pyplot as plt
    import numpy as np
    
    coordinates = [['Row', 0, 6.0, 5, 8.5, 0.42],
                   ['Row', 5, 8.5, 10, 6.0, 0.30]]
    for row in coordinates:
        xo, yo, xf, yf, wd = row[1:]
        wd = abs(wd)
        steps = 1
        plt.plot((xo, xf), (yo, yf), color='orange', linewidth=5)
        plt.plot((10, 10), (9, 9))
        plt.plot(2.5, 2.5)
        for arr in np.arange(xo, xf + 1e-9, steps):
            slope = (yf - yo) / (xf - xo)
            yep = slope * (arr - xo) + yo
            plt.arrow(arr, yep + wd, 0, -wd, color='black', linewidth=1)
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      • 2021-01-04
      • 1970-01-01
      • 2017-09-29
      • 1970-01-01
      相关资源
      最近更新 更多