2017-06-10 19 views
1

私はパスのデータフレームを持っています。同じ "uid"に属する(x、y)点は1つの別個の経路と見なされます。続きmatplotlibのグラフ線の色を制御する方法は?

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のオートグラフ内の各ラインの色を生成し、以来

%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() 

を、私はの色を制御したいです"uid"に基づいて私のdfから生成されたパス。

私ははuid = 25はuid = 27のみなるようにし、それらの残りの部分は黒であるために発生したパスの色を維持するとします。

はまた、私は他のすべては、単純なラインである必要がありながらを点在ことはuid = 25,27のためのラインの「種類」を変更したいです。どうすればこれを達成できますか?

答えて

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

+0

ありがとうございましたが、上記のDFは、わずか4つのidのに限定されるものではなく、私の実際のデータフレームは、パスの100年代を持ち、上記の例のように、uid 25と27のために生成されたパスのように、特定の色になるようにいくつかのIDを除いて、すべての行を同じ色にしたいだけです。 – Liza

+0

@Liza David氏の投稿を正しい解決策で編集したので、適切な権限を持っている人がそれを承認するとすぐに表示する必要があります。 – Hami

+0

@ハミありがとうございました。しかし、誰もすぐにそれを承認しなければ、別の答えとして親切に投稿してください。 – Liza

関連する問題