簡體   English   中英

大熊貓情節與正值一種顏色和負值另一種

[英]Pandas Plot With Positive Values One Color And Negative Values Another

我有一個pandas數據框,我在其中繪制了12列中的兩列,一列為x軸,另一列為y軸。 x軸只是一個時間序列,y軸是粗略的-5000到5000之間的隨機整數。

有沒有辦法只使用這兩列來制作散點圖,其中y的正值是某種顏色而負顏色是另一種顏色?

我嘗試了很多變化,但無法得到任何東西。 我嘗試使用seaborn colormaps和booleans mask為delta / positive數字分散顏色映射,colormeshs。 我沒辦法。

使用色彩圖對分散點進行着色的想法當然是合理的。 如果您正在使用plt.scatter圖,則可以提供colormap根據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個單獨的數據幀。 條件是if> 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()

在此輸入圖像描述

如果您希望繪制負數據幀為正寫入df.minus.y = -df_minus.y

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM