首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MatPlotLib :覆盖圆是透明的而不是不透明的

MatPlotLib :覆盖圆是透明的而不是不透明的
EN

Stack Overflow用户
提问于 2018-11-24 18:10:33
回答 1查看 368关注 0票数 0

我用库MatPlotLib生成一个SVG文件。

我在试着画一个黑边白脸的圆圈,这张脸必须是不透明的。我玩了参数edgecolor,facecolor,alpha,填充,但没有组合给我想要的。轴线和线不被圆圈覆盖:

代码语言:javascript
运行
复制
import os
import locale
import matplotlib.pyplot as plt
import matplotlib.lines as mlines

files = []

# -----------------------------------------------------------------------------
class Fig:
    def __init__(self, filename, figsize = [4,4]):
        self.filename = filename 
        self.fig = plt.figure(figsize=figsize)
        self.fig.gca().axis('off')

    def save(self):
        global files
        files.append(self.filename)
        self.fig.savefig(self.filename+'.svg')


# -----------------------------------------------------------------------------
class FigNotHomeo(Fig):
    def __init__(self, filename, figsize = [4, 4]):
        Fig.__init__(self, filename, figsize)
        ax = self.fig.gca()
        ax.set_xlim(-1.1,1.1)
        ax.set_ylim(-1.05, 1.05)
        ax.axis('on')
        ax.spines['left'].set_position('center')
        ax.spines['bottom'].set_position('center')
        ax.spines['right'].set_color('none')
        ax.spines['top'].set_color('none')
        ax.xaxis.set_ticks([-1,1])
        ax.yaxis.set_ticks([-1,1])
        ax.tick_params( axis='y', labeltop= True ) # does not work
        x = [1,-1,1,0]
        y = [1,-1,-1,0]
        ax.add_line(mlines.Line2D(x,y, color='black'))
        # facecolor='white', edgecolor = 'black', fill = True, alpha=1, clip_on=True
        c = plt.Circle((0, 0), radius=0.03, facecolor='white', edgecolor = 'black',  alpha=1, fill = True, clip_on=False)
        ax.add_patch(c)

# -----------------------------------------------------------------------------
def main():
    FigNotHomeo('NotHomeo', figsize=[6, 6]).save()

if __name__== "__main__":
    main()
EN

Stack Overflow用户

回答已采纳

发布于 2018-11-24 18:42:36

补丁通常有一个较低的zorder比线。

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt

circle = plt.Circle((.5, .5), radius=0.2)
plt.gca().add_patch(circle)

line = plt.Line2D([0,1],[0,1], color='black')
plt.gca().add_line(line)

plt.show()

然而,你当然可以根据你的愿望来设定这个顺序。

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt

circle = plt.Circle((.5, .5), radius=0.2, zorder=3)
plt.gca().add_patch(circle)

line = plt.Line2D([0,1],[0,1], color='black', zorder=2)
plt.gca().add_line(line)

plt.show()

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53461035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档