我正在编写一个脚本来通过 matplotlib 绘制绘图,以下代码是对我的原始脚本的类比,它重现了我遇到的问题。
def func(ax, data, color, position): # A function for plotting
ax.plot(data[0], data[1], color=color)
ax.spines[position].set_color(color)
fig = plt.figure()
data_1 = [np.linspace(0, 1, 10), np.linspace(0, 10, 10)]
data_2 = [np.linspace(0, 1, 10), np.linspace(10, 0, 10)]
ax = fig.add_subplot(111)
func(ax, data_1, 'r', 'left')
ax_1 = ax.twinx()
func(ax_1, data_2, 'b', 'right')
plt.show()
Run Code Online (Sandbox Code Playgroud)
预期的绘图应该将两个 y 轴都着色,但是,只有右脊柱着色,如下所示。

当放大左侧书脊时,您可以发现 y 轴周围有一个红色阴影,这意味着我的彩色书脊被另一个书脊覆盖了,如何仅通过修改来解决此问题func()?
twinx不仅“成对”y轴脊椎,而且还“成对”所有其他三个脊椎。所以左边的红色脊柱基本上是透支的(就像你在自己的答案中已经认识到的那样)。您可以将其可见性设置color为,而不是将其设置为,与此处的第 18-22 行相比,这似乎是首选方式。Noneset_visible()False
所以:
def func(ax, data, color, position): # A function for plotting
ax.plot(data[0], data[1], color=color)
ax.spines[position].set_color(color)
for pos in ['left', 'right']:
if pos != position:
ax.spines[pos].set_visible(False)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1491 次 |
| 最近记录: |