[英]Python - Categorical bubble plot
我有一個12x17數據框,並想要創建一個類似於以下內容的分類氣泡圖:
https://i.stack.imgur.com/IvD58.png (來自用於分類研究的分類氣泡圖 )
我的數據框基本上是這樣的:
# A B C
# X 0.3 0.2 0.4
# Y 0.1 0.4 0.1
我不能使用matplotlib.scatter,因為它不進行分類輸入,並且創建假值也不起作用,因為它不是n * n。 可以嗎 我不知道。 我發現seaborn.stripplot需要一個分類輸入,但是所有氣泡的大小都相同,所以我被卡住了。
有什么想法可以在python中創建這樣的情節嗎? 非常感謝。
我認為scatter
非常適合創建此類分類氣泡圖。
創建數據框:
import pandas as pd
df = pd.DataFrame([[.3,.2,.4],[.1,.4,.1]], columns=list("ABC"), index=list("XY"))
dfu = df.unstack().reset_index()
dfu.columns = list("XYS")
這會創建一個像
X Y S
0 A X 0.3
1 A Y 0.1
2 B X 0.2
3 B Y 0.4
4 C X 0.4
5 C Y 0.1
您可以按列進行繪制。 由於散點的大小是點,因此需要將S
列乘以某個較大的數字(例如5000)才能獲得大氣泡。
import matplotlib.pyplot as plt
dfu["S"] *= 5000
plt.scatter(x="X", y="Y", s="S", data=dfu)
plt.margins(.4)
plt.show()
使用例如numpy,可以創建數據框的列和索引的網格,從而可以繪制出扁平化網格的散點圖。 同樣,需要將數據幀值乘以一個較大的數字。
import numpy as np
import matplotlib.pyplot as plt
x,y = np.meshgrid(df.columns, df.index)
df *= 5000
plt.scatter(x=x.flatten(), y=y.flatten(), s=df.values.flatten())
plt.margins(.4)
plt.show()
在這兩種情況下,結果看起來像
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.