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)
从这里的讨论来看,这似乎是.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)
