【问题标题】:Plotting pandas dataframe with one color for several columns为多列绘制一种颜色的熊猫数据框
【发布时间】:2021-02-18 20:08:16
【问题描述】:

我有一个如下所示的数据框:

                                 A  ...            B
datetime                            ...             
2020-01-01 00:00:00         10.622  ...           30
2020-01-01 01:00:00         16.397  ...           30
2020-01-01 02:00:00         24.190  ...           30
2020-01-01 03:00:00         33.579  ...           30
2020-01-01 04:00:00         44.643  ...           30
                            ...     ...           ...
2020-01-07 20:00:00         18.090  ...           30
2020-01-07 21:00:00         18.027  ...           30

当我使用 df.plot 时,所有列都使用默认颜色和实线绘制。我想用相同的颜色绘制 A 到 x 列,但标记不同,并用相同的标记绘制另一种颜色的 x+1 到 B 列。

如果不单独为每一列手动声明,这是否可能?

谢谢!

【问题讨论】:

    标签: python pandas matplotlib


    【解决方案1】:

    您可以为此任务创建custom cycler

    from cycler import cycler
    import numpy as np
    import matplotlib.pyplot as plt
    import pandas as pd
    
    markernr = 3
    colornr = 2
    #test data generation
    np.random.seed(123)
    df = pd.DataFrame(np.random.random((10, 6)), columns=["A1", "A2", "A3", "B1", "B2", "B3"])
    
    colors = ["tab:red", "tab:blue", "tab:orange", "brown", "lightblue", "yellow"]
    markers = ["x", "o", "D", "+", "H"]
    
    my_cycler = (cycler(color=colors[:colornr]) *
                 cycler(marker=markers[:markernr]))
    
    fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 6))
    
    df.plot(ax=ax1, title="Standard cycler")
    
    ax2.set_prop_cycle(my_cycler)
    df.plot(ax=ax2, title="Customized cycler")
    
    plt.show()
    

    示例输出:

    【讨论】:

    • 感谢您的帮助!是否可以根据列的名称设置颜色/标记?
    • 您的意思是您的列类似于“A1、A2、B1、B2、B3、B4”?我假设从“具有相同标记的另一种颜色的 x+1 到 B”,这些组将具有相同的长度(“相同的标记”)。如果不是这样,您如何定义颜色 A 和颜色 B 的组?
    猜你喜欢
    • 1970-01-01
    • 2021-06-27
    • 2020-07-28
    • 2017-11-07
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多