首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matplotlib中寄生轴上的网格线

matplotlib中寄生轴上的网格线
EN

Stack Overflow用户
提问于 2010-02-12 06:07:48
回答 2查看 3.5K关注 0票数 2

你能在matplotlib中用寄生轴画出图中的网格线吗?

我尝试这样做,基于网格和寄生轴的样本,但不执行网格绘制:

代码语言:javascript
复制
from mpl_toolkits.axes_grid.parasite_axes import SubplotHost
import matplotlib.pyplot as plt

fig = plt.figure(1)

host = SubplotHost(fig, 111)
fig.add_subplot(host)

par = host.twinx()

host.set_xlabel("Distance")
host.set_ylabel("Density")
par.set_ylabel("Temperature")

p1, = host.plot([0, 1, 2], [0, 1, 2], label="Density")
p2, = par.plot([0, 1, 2], [0, 3, 2], label="Temperature")

host.axis["left"].label.set_color(p1.get_color())
par.axis["right"].label.set_color(p2.get_color())

host.grid(True)

host.legend()

plt.show()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-14 00:53:30

从讨论here来看,这似乎是.99版本中的一个错误。

(我不确定为什么它适用于doug,但在0.99.1.1-r1版本上,rcParams的组合不适用于我。)

在该link中,答案是调用:

代码语言:javascript
复制
host.toggle_axisline(False)

toggle_axisline所做的仅仅是使x轴和y轴(它们负责在主线mpl中绘制刻度线、刻度线标签等)再次可见,并使轴“底部”等不可见。

整个程序变成:

代码语言:javascript
复制
from mpl_toolkits.axes_grid.parasite_axes import SubplotHost
import matplotlib.pyplot as plt

fig = plt.figure(1)

host = SubplotHost(fig, 111)
fig.add_subplot(host)

par = host.twinx()

host.set_xlabel("Distance")
host.set_ylabel("Density")
par.set_ylabel("Temperature")

p1, = host.plot([0, 1, 2], [0, 1, 2], label="Density")
p2, = par.plot([0, 1, 2], [0, 3, 2], label="Temperature")

host.axis["left"].label.set_color(p1.get_color())
par.axis["right"].label.set_color(p2.get_color())

host.toggle_axisline(False)
host.grid(True)

host.legend()

plt.show()

票数 5
EN

Stack Overflow用户

发布于 2010-02-13 12:40:15

对于这种类型的绘图,并不总是很容易一眼就知道哪个对象应该调用“grid”。

绕过这种不便的一种方法是编辑您的配置文件,这样就可以在不更改任何代码的情况下获得绘图上的网格线,并担心是否有正确的对象调用‘grid’。这可能足以让您做您需要做的事情,但以防万一:

  1. 下载示例matplotlibrc文件here或在上检索您的副本关于此文件的第195行左右,查找标题(作为注释) "### AXES";
    1. 在该标题下五-六行您将看到此行并将值设置为“True”;
    2. 现在向下读取此文件到第235行左右,其中您将看到标题“###
    3. ”;
    4. 取消注释接下来的三行('grid.color‘、'grid.linestyle’和grid.linewidth'),并为这三个参数提供合理的值(我的参数分别是:'darkslategray‘、':’和0.7 )。( ':‘值表示我的网格线将是虚线。)
    5. 将该文件另存为:~/.matplotlibrary/matplotlibrc(换句话说,在顶级用户目录中创建一个名为’.matplotlibrary‘的目录,不要忘记前导'.',然后将您正在编辑的文件命名为'matplotlibrc'.

就这样。(缺点是,当您创建不需要网格线的绘图时--对于这些绘图,我将保持此配置文件不变,并根据需要创建其他配置文件并在其中进行切换(有关如何执行此操作,请参阅relevant Matplotlib page )。

此外,这个配置文件很容易使用ipython进行编辑--这可能是大多数用户的做法,但这在这里可能会让人感到困惑。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2248118

复制
相关文章

相似问题

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