早上好,
我在使用 seaborn 的 bar catplot 進行子繪圖時遇到了一個小問題
這是一個小例子來說明:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
y = [1.0, 5.5, 2.2, 9.8]
x = ["A", "B", "A", "B"]
z = ["type1", "type2", "type1", "type2"]
df = pd.DataFrame(x, columns=["x"])
df["y"] = y
df["z"] = z
print(df)
sns.catplot(x="x", y="y", data=df, col="z", kind="bar")
plt.show()
我的問題是我希望 x 軸中 y 軸為 0.0 的條目不應該出現。有沒有辦法做到這一點?因為真實的例子比這更復雜。我在 x 軸上至少有 10 個條目(每個“型別”中有 5 個條目,我想將它們嚴格分開,但同時我希望條形圖彼此相鄰),否則它看起來很難看。
這是代碼的結果影像

謝謝你,如果你有任何提示
uj5u.com熱心網友回復:
默認情況下,x 軸是共享的。您可以設定sharex=False以防止這種情況發生。
我稍微擴展了示例資料以明確著色是如何作業的。
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
y = [1.0, 5.5, 2.2, 9.8, 3, 4]
x = ["A", "B", "A", "B", "C", "A"]
z = ["type1", "type2", "type1", "type2", "type1", "type2"]
df = pd.DataFrame({"x": x, "y": y, "z": z})
sns.catplot(x="x", y="y", data=df, col="z", kind="bar", sharex=False)

請注意,這會生成一個警告(我正在使用 Seaborn 0.11.2 進行測驗):
用戶警告:設定
sharex=Falsewithcolor=None可能會導致不同級別的x變數共享顏色。這將在未來的版本中改變。
這意味著子圖是獨立生成的,這可能會使著色變得混亂。在示例中,“A”條在第一個子圖中為藍色,在第二個子圖中為橙色。您可以通過將“x”也用于“色調”來解決此問題,從而獲得一致的顏色。在這種情況下,dodge=False每個 x 位置將只放置一個條形。
sns.catplot(x="x", y="y", data=df, col="z", kind="bar", sharex=False, hue="x", dodge=False)

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/335932.html
標籤:Python matplotlib 海生 猫图
