【问题标题】:How to change color of particular edge for polygon in python?如何在python中更改多边形特定边缘的颜色?
【发布时间】:2020-01-26 02:06:52
【问题描述】:

有一个多边形,我想知道如何改变它的特定边缘的颜色,如下图。

import matplotlib.pyplot as plt
import numpy as np


## -----------------------Initialize Geometry----------------------- 
pixels = 600
my_dpi = 100

coord = [[-150,-200],[300,-200],[300,0],[150,200],[-150,200]]


fig = plt.figure(figsize=( pixels/my_dpi,  pixels/my_dpi), dpi=my_dpi)  

plt.axes([0,0,1,1])

rectangle = plt.Rectangle((-300, -300), 600, 600, fc='k')
plt.gca().add_patch(rectangle)
polygon = plt.Polygon(coord,fc='w')
plt.gca().add_patch(polygon)
plt.axis('off')
plt.axis([-300,300,-300,300])

plt.savefig('figure1/5.jpg',dpi=my_dpi)

【问题讨论】:

    标签: python matplotlib colors polygon


    【解决方案1】:

    最简单的方法是在多边形的两个相关顶点之间绘制一条线,即

    plt.plot([coords[0,0], coords[-1,0]], [coords[0,1], coords[-1,1]], color='r', lw=5)
    

    给你

    虽然我建议给多边形添加一个与面颜色相同颜色的线条宽度相同的边框:

    polygon = plt.Polygon(coord,fc='w',ec='w',lw=5)
    

    作为使红线看起来齐平的一种方式。您可以更改哪条边是彩色的,您只需在 plt.plot() 中更改 coords[i,j] 的索引,只要索引是相邻的(带有环绕 - 所以最后一个索引和第一个索引是相邻的),绘制的线将是一条边而不是对角线。

    还请注意,您可以通过使用切片或辅助函数来缩短绘图命令,但为了明确起见,我忽略了这一点。

    【讨论】:

    • 谢谢。是的,它有效,但你的红线长度如何等于多边形边缘,但我的更大?
    • @Hamed 那是因为也为多边形设置了一个边框,与绘制的线的宽度相同,颜色与多边形的facecolor相同
    • 不错。例如,当我们将线宽增加到 5 时,线宽会延伸到多边形之外,在某些情况下,多边形与黑色矩形具有相同的边框它不起作用并且线宽保持为 1。这是一种增加的方法增加在多边形内部而不是外部的线宽?
    • @Hamed 我不确定我是否理解你的意思:你能给我一个链接到发生问题的图片吗?
    • 在图中可以看到白色五边形和黑色矩形的左边缘相同,所以线宽是1而不是4。i.stack.imgur.com/gxvwn.png
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    相关资源
    最近更新 更多