【问题标题】:Python scatter plot different colors depending on valuePython散点图根据值不同的颜色
【发布时间】:2017-09-14 21:34:42
【问题描述】:

我有一个要制作散点图的数据框。

数据框看起来像:

       year  length  Animation
0      1971     121       1
1      1939      71       1
2      1941       7       0
3      1996      70       1
4      1975      71       0

我希望散点图中的点具有不同的颜色,具体取决于动画行中的值。
所以动画 = 1 = 黄色
动画 = 0 = 黑色
或者类似的东西

我尝试了以下操作:

dfScat = df[['year','length', 'Animation']]
dfScat = dfScat.loc[dfScat.length < 200]    
axScat = dfScat.plot(kind='scatter', x=0, y=1, alpha=1/15, c=2)

这会导致滑块难以区分。

【问题讨论】:

    标签: python pandas matplotlib plot


    【解决方案1】:

    您还可以通过将数组传递给 c= 来为点分配离散颜色 像这样:

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    d = {"year"      : (1971, 1939, 1941, 1996, 1975),
         "length"    : ( 121,   71,    7,   70,   71),
         "Animation" : (   1,    1,    0,    1,    0)}
    
    df = pd.DataFrame(d)
    print(df)
    
    colors = np.where(df["Animation"]==1,'y','k')
    df.plot.scatter(x="year",y="length",c=colors)
    plt.show()
    

    这给出了:

       Animation  length  year
    0          1     121  1971
    1          1      71  1939
    2          0       7  1941
    3          1      70  1996
    4          0      71  1975
    

    【讨论】:

      【解决方案2】:

      scatter中使用c参数

      df.plot.scatter('year', 'length', c='Animation', colormap='jet')
      

      【讨论】:

      • 这正是我正在做的。我只是使用他们的索引而不是名称。好的提醒。但是我将如何根据它们的价值完全改变颜色。我没有介于 0 和 1 之间的任何值。例如,滑块上的 1 = 黄色和 0 = 黑色。
      • 尝试使用那里的列名。使用不同的颜色图。
      • 干杯,不知道颜色图。 :)
      猜你喜欢
      • 2021-07-13
      • 2019-02-11
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      • 2015-04-07
      • 2020-01-10
      相关资源
      最近更新 更多