在连续绘图命令期间关闭自动颜色循环

时间:2017-04-01 13:35:09

标签: python pandas matplotlib dataframe

我想在绘制两个列相同但代表不同实验的pandas数据帧时使用相同的颜色循环。例如,

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

f1 = lambda x: (x/1)**2
f2 = lambda x: (x/2)**2
f3 = lambda x: (x/3)**2

x = np.linspace(0, 1, 100)

exp1 = pd.DataFrame({'f1': f1(x), 
                     'f2': f2(x), 
                     'f3': f3(x)})
exp2 = exp1 * 1.5

fig, ax = plt.subplots()

exp1.plot(ax=ax)
exp2.plot(ax=ax, style='--', legend=False)

给出一个看起来像这样的数字:

enter image description here

第二个绘图命令继续在第一个之后颜色循环停止的位置。在pandas DataFrames的连续绘图命令之间“重置”颜色循环的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

除了上面提到的答案之外,还值得一提的是,你总是可以选择自己的自定义颜色,然后在两个地块中使用该设置。

from itertools import cycle, islice

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

f1 = lambda x: (x / 1) ** 2
f2 = lambda x: (x / 2) ** 2
f3 = lambda x: (x / 3) ** 2

x = np.linspace(0, 1, 100)

exp1 = pd.DataFrame({'f1': f1(x),
                     'f2': f2(x),
                     'f3': f3(x)})
exp2 = exp1 * 1.5

custom_colours = list(islice(cycle(["b", "g", "r", "c", "m", 'k']), None, len(exp1)))

fig, ax = plt.subplots()

exp1.plot(ax=ax, color=custom_colours)
exp2.plot(ax=ax, style='--', legend=False, color=custom_colours)