如何控制matplotlib中图形线的颜色?

时间:2017-06-10 20:28:10

标签: python pandas matplotlib dataframe graph

我有一个以下数据路径的路径,(x,y)属于同一个“uid”的点被认为是一个单独的路径。

   uid        x       y
 0  5          1       1
 1  5          2       1
 2  5          3       1
 3  5          4       1
 4  21         4       5 
 6  21         6       6
 7  21         5       7
 8  25         1       1
 9  25         2       2
10  25         3       3
11  25         4       4
12  25         5       5
13  27         1       3
14  27         2       3
15  27         4       3

以下是我用来绘制这些路径的代码:

%matplotlib notebook

fig, ax = plt.subplots(figsize=(12,8))
df.groupby("uid").plot(kind='line', x = "x", y = "y", ax = ax)
plt.title("Paths")

#ax.legend_.remove()

plt.show()

因为matplotlib会自动为图中的每一行生成颜色,我想根据“uid”来控制从我的df生成的路径的颜色。

假设我想保持为 uid = 25 uid = 27 生成的路径的颜色为绿色,其余的都是黑人。

另外,我想将uid = 25,27的“kind”更改为点缀,而其他所有行应该是简单的行。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

这就是你如何做一个循环:

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_table("data.txt", sep=" ")
fig, ax = plt.subplots(figsize=(12, 8))

color = ["k", "g"]
line = ["solid", "dotted"]
for (key, gr) in df.groupby("uid"):
    if key == 25 or key == 27:
        i = 1
    else:
        i = 0
    gr.plot(linestyle=line[i], x="x", y="y", ax=ax, color=color[i], label=key)
plt.title("Paths")
plt.show()

enter image description here