我有一个配色方案来自
plt.style.use('ggplot')
Run Code Online (Sandbox Code Playgroud)
所以我不想手动选择颜色,或者从颜色循环器中选择它们。但是,当我有一个辅助轴时:
fig, ax = plt.subplots()
ax2 = ax.twinx()
ax.plot(np.array([1, 2]))
ax2.plot(np.array([3, 4]))
Run Code Online (Sandbox Code Playgroud)
它将以相同的颜色绘制两条线。我如何判断ax2该图上已经n=1绘制了线条,以便它以第n+1th 种颜色开头?
我觉得手动调用next()上prop_cycler作为建议对方的回答是有点容易出错,因为它很容易忘记。为了使该过程自动化,您可以使两个轴共享同一个循环仪:
ax2._get_lines.prop_cycler = ax1._get_lines.prop_cycler
Run Code Online (Sandbox Code Playgroud)
是的,它仍然是一个丑陋的黑客,因为它取决于内部实现细节而不是定义的接口。但是在没有官方功能的情况下,这可能是最强大的解决方案。如您所见,您可以按任意顺序在两个轴上添加绘图,无需人工干预。
完整代码:
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('ggplot')
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax2._get_lines.prop_cycler = ax1._get_lines.prop_cycler
ax1.plot(np.array([1, 2, 3]))
ax2.plot(np.array([3, 5, 4]))
ax1.plot(np.array([0, 1, 3]))
ax2.plot(np.array([2, 4, 1]))
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1160 次 |
| 最近记录: |