matplotlib中寄生轴的网格线

Pab*_*uez 2 python grid matplotlib

你能在matplotlib的寄生轴图中绘制网格线吗?

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

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()
Run Code Online (Sandbox Code Playgroud)

Mar*_*ark 5

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

(我不确定为什么它适用于道格,但在版本0.99.1.1-r1上没有rcParams的组合对我有用.)

从该链接的答案是打电话给:

host.toggle_axisline(False)
Run Code Online (Sandbox Code Playgroud)

toggle_axisline的作用只是让xaxis和yaxis(它们负责在主线mpl中绘制刻度线,刻度标签等)再次可见,并使轴["bottom"]等不可见.

整个计划变为:

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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述