【问题标题】:Remove secondary frame in figure去掉图中的次要框
【发布时间】:2019-08-01 18:10:17
【问题描述】:

需要从 pyplot 中删除辅助框架(据信是从将图例添加到绘图中)。

首先,我已经阅读了其他关于类似问题的问答。 Frameon=False 或 frameon=0 不起作用,我最近重新下载了 matplotlib。其他答案并没有完全解决我的具体问题。我还尝试摆脱 plt.legend(),它摆脱了框架和图例。所以然后我尝试了 plt.legend(frameon=False) 并没有改变。

#Arbitrary runnable code
from getpass import getpass
import numpy as np
import pylab as plt
import matplotlib as mpl
import healpy as hp
from matplotlib.backends.backend_pdf import PdfPages


with PdfPages('KimmiesHistogram.pdf') as pdf:

    mpl.rcParams['font.family']='serif'
    mpl.rcParams['font.size']=12

    fig = plt.figure(figsize= (12,12), frameon= False)

    plt.xlabel('MJD: Range')

    plt.title("MJD Ranges by Filter")

    y= [1, 2,3,45,6,4,34,76,4,34,65,23,34,3,3,9,5,5]
    y2=[1, 2,3,45,6,4,34,76,4,34,65,23,34,3,3,9,5,5]
    ax1 = fig.add_subplot(132)
    ax1.set_xscale('log')
    ax1.set_yscale('linear')

    plt.hist([y,y2], bins=10, histtype='step', cumulative=1)

    plt.show()

谢谢!

【问题讨论】:

  • 您的代码不可运行(请参阅minimal reproducible example)并且没有尝试使用frameon。总而言之,这使您完全无法知道您面临什么问题。
  • 抱歉,您需要访问一个大型的私有文件才能运行它。我最近从 plt.legend() 中取出了框架,因为它不起作用。我仍然在上面使用 plt.figure。主要问题是传说,我敢肯定,因为如果我把它全部拿出来,外框就会消失。希望这会有所帮助。
  • 您需要通过创建minimal reproducible example使其可运行。那就是忘记您的秘密文件并使用示例代码中创建的数据。
  • 谢谢,我会试试的!抱歉,刚接触这个。
  • 现在可以运行了!请再试一次,因为我还需要帮助!

标签: python matplotlib legend


【解决方案1】:

不清楚你的真正意思是什么,但我相信你看到了 3 个子图的边界。如果不是这种情况,请澄清您的问题。当我运行你的代码时,我得到了这个:

如果您想移除该外框,则只需使用ax=fig.add_subplot(111) 指定您只想添加 1 个子图而不是 3 个子图的中间。那就是你的问题所在。但老实说,您不需要在示例中添加图形轴来绘制您想要的数据。

#Arbitrary runnable code
from getpass import getpass
import numpy as np
import pylab as plt
import matplotlib as mpl
from matplotlib.backends.backend_pdf import PdfPages


with PdfPages('KimmiesHistogram.pdf') as pdf:

    mpl.rcParams['font.family']='serif'
    mpl.rcParams['font.size']=12

    fig = plt.figure(figsize= (12,12), frameon= False)

    plt.xlabel('MJD: Range')

    plt.title("MJD Ranges by Filter")

    y= [1, 2,3,45,6,4,34,76,4,34,65,23,34,3,3,9,5,5]
    y2=[1, 2,3,45,6,4,34,76,4,34,65,23,34,3,3,9,5,5]
    ax1 = fig.add_subplot(111)
    ax1.set_xscale('log')
    ax1.set_yscale('linear')

    plt.hist([y,y2], bins=10, histtype='step', cumulative=1)

    plt.show()

【讨论】:

  • 次情节正是问题所在!非常感谢您的详尽回答!
猜你喜欢
  • 1970-01-01
  • 2011-01-24
  • 2012-06-11
  • 1970-01-01
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 2014-08-05
  • 2019-11-28
相关资源
最近更新 更多