gpt4 book ai didi

python - 在 Matplotlib 中重置颜色循环

转载 作者:IT老高 更新时间:2023-10-28 20:36:12 25 4
gpt4 key购买 nike

假设我有关于 3 种交易策略的数据,每种都有交易成本和没有交易成本。我想在同一轴上绘制 6 个变体中每一个的时间序列(3 个策略 * 2 个交易成本)。我想用 alpha=1 绘制“有交易成本”线和 linewidth=1而我希望用 alpha=0.25 绘制“无交易成本”和 linewidth=5 .但我希望每种策略的两个版本的颜色都相同。

我想要一些类似的东西:

fig, ax = plt.subplots(1, 1, figsize=(10, 10))

for c in with_transaction_frame.columns:
ax.plot(with_transaction_frame[c], label=c, alpha=1, linewidth=1)

****SOME MAGIC GOES HERE TO RESET THE COLOR CYCLE

for c in no_transaction_frame.columns:
ax.plot(no_transaction_frame[c], label=c, alpha=0.25, linewidth=5)

ax.legend()

在指示的行上放置什么合适的代码来重置颜色循环,以便在调用第二个循环时“回到开始”?

最佳答案

您可以使用 Axes.set_color_cycle 将颜色周期重置为原始颜色.查看此代码,有一个函数可以完成实际工作:

def set_color_cycle(self, clist=None):
if clist is None:
clist = rcParams['axes.color_cycle']
self.color_cycle = itertools.cycle(clist

以及使用它的 Axes 上的方法:

def set_color_cycle(self, clist):
"""
Set the color cycle for any future plot commands on this Axes.

*clist* is a list of mpl color specifiers.
"""
self._get_lines.set_color_cycle(clist)
self._get_patches_for_fill.set_color_cycle(clist)

这基本上意味着您可以使用 None 作为唯一参数调用 set_color_cycle,它将被 rcParams['axes.color_cycle'] 中的默认循环替换。

我用下面的代码试了一下,得到了预期的结果:

import matplotlib.pyplot as plt
import numpy as np

for i in range(3):
plt.plot(np.arange(10) + i)

# for Matplotlib version < 1.5
plt.gca().set_color_cycle(None)
# for Matplotlib version >= 1.5
plt.gca().set_prop_cycle(None)

for i in range(3):
plt.plot(np.arange(10, 1, -1) + i)

plt.show()

Code output, showing the color cycling reset functionality

关于python - 在 Matplotlib 中重置颜色循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24193174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com