【问题标题】:Plot data from pandas DataFrame, colour of points dependant on a column绘制来自 pandas DataFrame 的数据,点的颜色取决于列
【发布时间】:2018-09-15 23:09:57
【问题描述】:

我有一个包含 3 列的 pandas DataFrame,如下所示。

col1 value flag 1 0 0 2 0.03915 0 3 0.13 1

我想从这个数据框中创建一个散点图,其中col1 是 x 轴,value 是 y 轴,而我正在努力做的部分是,对于我想要的具有 flag=0 的行这个点的颜色是蓝色的,如果flag=1 我想把这个点染成红色。

是否有一种简单的方法可以检查每行的标志列并相应地为点着色?

【问题讨论】:

    标签: python pandas matplotlib data-visualization


    【解决方案1】:

    您可以使用内置的df.plot.scatter() 函数并将flag 列传递给color 参数:

    import pandas as pd
    
    idx = [1,2,3]
    value = [0., 0.03, 0.13]
    flag = [0, 0, 1]
    
    df = pd.DataFrame(dict(idx=idx, value=value, flag=flag))
    
    df.plot.scatter('idx', 'value', c='flag', cmap='RdBu_r')
    

    【讨论】:

      【解决方案2】:

      假设包含给定数据的数据框是df,这就是你想要的。 您可以根据您的条件 flag 列及其值创建颜色列表。将该颜色列表提供给内置 DataFrame.plot.scatter 函数中的 color 参数。 (您可以找到文档here。)

      colors = ['r' if flag==1 else 'b' for flag in df.flag]
      df.plot.scatter('col1', 'value', color=colors)
      

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        您可以将向量传递给散点图,如下所示

        import matplotlib.pyplot as plt
        
        df = pd.DataFrame(data = {'value':[0, 0.4, 0.13], 'flag':[0,0,1]})
        plt.scatter(df['value'], df.index, c=df['flag'])
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-04-16
          • 1970-01-01
          • 1970-01-01
          • 2020-03-11
          • 2017-10-16
          • 1970-01-01
          • 2021-08-21
          • 1970-01-01
          相关资源
          最近更新 更多