2017-04-24 12 views
2

私はx軸とy軸の1つとして12の2つの列をプロットしています。 x軸は単に時系列であり、y軸は値が約-5000から5000までのランダムな整数です。パンダプロット正の値1つの色と負の値もう1つ

yの正の値が特定の色であり、負の色が別の色である2つの列のみを使用して散布図を作成する方法はありますか?

私は非常に多くのバリエーションを試しましたが、何もすることはできません。カラーマップ、カラーメッシュ、海賊カラーマップ、ブーリアンマスクを使用してネガ/ポジティブ数を試しました。私は私の知恵の終わりです。

+0

http://matplotlib.org/examples/pylab_examples/color_by_yvalue.html –

答えて

2

散布図の点を色分けするためにカラーマップを使用するというアイデアは、裁判所の正当性が証明されています。 plt.scatterプロットを使用している場合は、c引数でカラーマップが色を選択する値を指定できます。

ここでは2つの値しか必要ないので、が適切な選択肢になります。

import matplotlib.pyplot as plt 
import numpy as np 
import pandas as pd 

df = pd.DataFrame({'x': np.arange(25), 'y': np.random.normal(0,2500,25)}) 
fig, ax = plt.subplots() 

ax.scatter(df.x, df.y, c=np.sign(df.y), cmap="bwr") 

plt.show() 

enter image description here

0

ブールマスキングとwhereキーワードを使用して2つのデータフレームを作成します。条件は> 0かどうかです。次に、両方のデータフレームを、色ごとに異なるパラメータを使用して1つずつ、もう一方の上にプロットします。

0

分割データフレームおよびそれらを別々にプロットします

import matplotlib.pylab as plt 
import numpy as np 
import pandas as pd 

df = pd.DataFrame({'x': np.arange(20), 'y': np.random.randn(20)}) 
# split dataframes 
df_plus = df[df.y >= 0] 
df_minus = df[df.y < 0] 
print df_plus 
print df_minus 

fig = plt.figure() 
ax = fig.add_subplot(1, 1, 1) 
# plot scatter 
ax.scatter(df_plus.x, df_plus.y, color='r') 
ax.scatter(df_minus.x, df_minus.y, color='b') 
ax.autoscale() 
plt.show() 

enter image description here

をあなたに正の書き込みdf.minus.y = -df_minus.y負datframeをプロットしたい場合。