我有一個熊貓數據框,我在繪製12列中的兩列,一列爲x軸,一個爲y軸。 x軸簡單地是一個時間序列,而y軸是大致在-5000和5000之間的隨機整數。熊貓繪製正值一種顏色和負值另一種
有沒有什麼辦法可以只使用這2列進行散點圖,其中y的正值是某種顏色而負值是另一種顏色?
我已經嘗試了這麼多的變化,但不能得到任何東西去。我嘗試使用seaborn colormaps和布爾值作爲負數/正數的分色圖,colormeshs。我不知道該怎麼做。
我有一個熊貓數據框,我在繪製12列中的兩列,一列爲x軸,一個爲y軸。 x軸簡單地是一個時間序列,而y軸是大致在-5000和5000之間的隨機整數。熊貓繪製正值一種顏色和負值另一種
有沒有什麼辦法可以只使用這2列進行散點圖,其中y的正值是某種顏色而負值是另一種顏色?
我已經嘗試了這麼多的變化,但不能得到任何東西去。我嘗試使用seaborn colormaps和布爾值作爲負數/正數的分色圖,colormeshs。我不知道該怎麼做。
使用顏色映射爲分散點着色的想法是合理的。如果您使用的是plt.scatter
圖,則可以提供顏色圖在c
參數中根據哪個值選擇顏色的值。
在這裏你只需要兩個值,所以c= np.sign(df.y)
將是一個合適的選擇。
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()
通過使用布爾值掩碼和where關鍵字來生成2個獨立的數據幀。條件將是如果> 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()
如果你想繪製負datframe爲正寫df.minus.y = -df_minus.y
。
http://matplotlib.org/examples/pylab_examples/color_by_yvalue.html –