【问题标题】:How can I do to keep the green color with the transparency?我该怎么做才能保持绿色和透明度?
【发布时间】:2019-12-22 16:12:04
【问题描述】:

您好,我正在使用 Python,尤其是 matplotlib 库来绘制一些矩形。这是我的代码:

def draw_rectangle():
    import matplotlib.pyplot as plt
    import numpy as np
    from matplotlib.widgets import RectangleSelector

    xdata = np.linspace(0, 9 * np.pi, num=301)
    ydata = np.sin(xdata)

    fig, ax = plt.subplots()
    ax.plot(xdata, ydata)

    def line_select_callback(eclick, erelease):
        x1, y1 = eclick.xdata, eclick.ydata
        x2, y2 = erelease.xdata, erelease.ydata

        rect = plt.Rectangle((min(x1, x2), min(y1, y2)), np.abs(x1 - x2), np.abs(y1 - y2))
        ax.add_patch(rect)

    rs = RectangleSelector(ax, line_select_callback,
                           drawtype='box', useblit=False, button=[1],
                           minspanx=5, minspany=5, spancoords='pixels',
                           interactive=True,
                           rectprops=dict(facecolor='green', edgecolor='black', alpha=0.8, fill=True))

    plt.show()

if __name__ == '__main__':
    draw_rectangle()

问题如下:我想在释放鼠标按钮时保持绿色和透明度。

我该怎么做?

非常感谢!

【问题讨论】:

    标签: python python-3.x matplotlib rectangles


    【解决方案1】:

    分别定义矩形属性,然后将它们用于选择器和补丁。

    def draw_rectangle():
        import matplotlib.pyplot as plt
        import numpy as np
        from matplotlib.widgets import RectangleSelector
    
        xdata = np.linspace(0, 9 * np.pi, num=301)
        ydata = np.sin(xdata)
    
        fig, ax = plt.subplots()
        ax.plot(xdata, ydata)
    
        rectprops=dict(facecolor='green',
                       edgecolor='black',
                       alpha=0.8, fill=True)    #*******
    
        def line_select_callback(eclick, erelease, props=rectprops):
            x1, y1 = eclick.xdata, eclick.ydata
            x2, y2 = erelease.xdata, erelease.ydata
    
            rect = plt.Rectangle((min(x1, x2), min(y1, y2)),
                                 np.abs(x1 - x2),
                                 np.abs(y1 - y2),
                                 **props)    #*******
            ax.add_patch(rect)
    
        rs = RectangleSelector(ax, line_select_callback,
                               drawtype='box', useblit=False, button=[1],
                               minspanx=5, minspany=5, spancoords='pixels',
                               interactive=True,
                               rectprops=rectprops)    #*******
    
        plt.show()
        plt.close()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      相关资源
      最近更新 更多