【问题标题】:Borderless matplotlib plots无边界 matplotlib 绘图
【发布时间】:2013-09-07 09:03:19
【问题描述】:

有没有办法保存 matplotlib 图形而没有边框周围的框架,同时保持背景不透明?

如我在下面的代码中所示,将框架设置为“关闭”不起作用,因为这会删除背景使其透明,而我想保留白色背景,只是没有边框。

a = fig.gca()  
a.set_frame_on(False)  

这是我正在尝试做的屏幕截图。如果可以去掉边框,那我就可以单独画x轴了。

非常感谢所有建议。

【问题讨论】:

  • 我很好奇你为什么接受比尔的回答……我比他早一分钟给出了同样的答案。这没什么大不了的,我只是想知道他是否做了我没有做的事情。
  • 当我向下滚动页面时,它是出现的第一个答案并且它有效。我已经接受了你的回答,因为你的回答早了。

标签: python matplotlib


【解决方案1】:

在这里提出了类似的问题:How can I remove the top and right axis in matplotlib?。谷歌搜索“隐藏轴 matplotlib”将其作为第 5 个链接。

去除刺:

x = linspace(0, 2 * pi, 1000)
y = sin(x)
fig, ax = subplots()
ax.plot(x, y)
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.grid(axis='y')

【讨论】:

    【解决方案2】:

    您可以尝试使用ax.spines。例如:

    import matplotlib.pyplot as plt
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    
    ax.plot(x, y)
    
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    ax.spines['left'].set_visible(False)
    

    如果你想删除所有的刺(可能还有蜱),你可以这样做

    [s.set_visible(False) for s in ax.spines.values()]
    [t.set_visible(False) for t in ax.get_xticklines()]
    [t.set_visible(False) for t in ax.get_yticklines()]
    

    【讨论】:

    • ax.tick_params(left=False, right=False) 等等,比遍历每组刻度线要容易一些。
    【解决方案3】:

    更简单的方法:

    import matplotlib.pyplot as plt
    plt.tick_params(left=False, labelleft=False) #remove ticks
    plt.box(False) #remove box
    

    【讨论】:

    • 如果你使用Axes对象:ax.set_frame_on(False)
    猜你喜欢
    • 2014-12-20
    • 2013-06-29
    • 2013-10-03
    • 2022-01-02
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    • 2019-04-22
    相关资源
    最近更新 更多