Python:根据日期绘制具有不同颜色的分散数据

时间:2018-10-22 14:05:01

标签: python pandas matplotlib

我有一个看起来像这样的数据框:

         date               value1          value2
0      2018-10-20             11             11
1      2018-10-20             10             10
2      2018-10-20             12              8
3      2018-10-20             12             14
4      2018-10-20             13             13
5      2018-10-20              9             12             
6      2018-10-20             11             15
7      2018-10-20             13              7
8      2018-10-20             10             11
9      2018-10-21             14             13
10     2018-10-21             11             14
11     2018-10-21             15              8
12     2018-10-21             8              11
13     2018-10-21             13             12
14     2018-10-21             14             14
15     2018-10-21             10             15
16     2018-10-22              9             11
17     2018-10-22              8              6
18     2018-10-22             12             15
19     2018-10-22             13             13
20     2018-10-22             11             10
21     2018-10-22             14              8
22     2018-10-22             15             17
23     2018-10-22             10             12
24     2018-10-22             11             11
25     2018-10-22             14              5
26     2018-10-22             17             17

我想绘制一个分散的图表,其中x = value1,y = value2,并且数据根据日期(在这种情况下为3种不同的颜色,一种为20,一种为21,一种为22)着色。

有可能吗?预先谢谢你

3 个答案:

答案 0 :(得分:1)

是的,seaborn是最理想的选择,并提供了许多选择

import seaborn as sns
sns.scatterplot(x='value1', y='value2', hue='date', data=df)

答案 1 :(得分:1)

是的,这是可能的。使用c=给出颜色。然后,要根据日期创建颜色,请使用类似以下内容的

v1 = [10, 11]
v2 = [11, 12]

d1 = datetime.datetime.strptime("2018-10-20", "%Y-%M-%d")
d2 = datetime.datetime.strptime("2018-10-22", "%Y-%M-%d")

# considering d1 as the minimum date, easy to retrieve
colors = np.array([(d1-d1).total_seconds(), (d2-d1).total_seconds()])
colors /= np.max(colors)

plt.scatter(x=v1, y=v2, c=colors)

答案 2 :(得分:0)

I answered this question here

plt.scatter(x_vals, y_vals,  c = z_vals, cmap = 'rainbow')

基本上,将“ c”设置为等于日期,然后选择适当的颜色图。