[英]Plotting scatter plot of pandas dataframe with both categorical and numerical data
我正在嘗試將 plot 分散為以下類型的 pandas dataframe 的 plot:
df = pd.DataFrame([['RH1', 1, 3], ['RH2', 0, 3], ['RH3', 2, 0], ['RH4', 1, 2], columns=['name', 'A', 'B'])
最終的 plot 應將“名稱”列作為 Y 軸,將“A”和“B”作為 X 軸。 並且不同的數值具有不同的顏色。 像這樣的
我嘗試通過遍歷 dataframe 的每一行來實現 plot 但我卡在某個地方無法做到,我遇到的主要問題是兩個軸的大小。 如果有人能幫助我,那就太好了。 先感謝您。
您可以融化dataframe 並將這些值用作顏色列:
from matplotlib import pyplot as plt
import pandas as pd
df = pd.DataFrame([['RH1', 1, 3], ['RH2', 0, 3], ['RH3', 2, 0], ['RH4', 1, 2]], columns=['name', 'A', 'B'])
df.melt(["name"]).plot(x="variable", y= "name", kind="scatter", c="value", cmap="plasma")
plt.show()
如果您的值數量有限,您可以將顏色圖更改為離散顏色圖,並將每種顏色及其值更改為 label。 或者,使用 seaborn 的 stripplot:
from matplotlib import pyplot as plt
import pandas as pd
import seaborn as sns
df = pd.DataFrame([['RH1', 1, 3], ['RH2', 0, 3], ['RH3', 2, 0], ['RH4', 1, 2]], columns=['name', 'A', 'B'])
sns.stripplot(data=df.melt(["name"]), x="variable", y= "name", hue="value", jitter=False)
plt.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.