簡體   English   中英

Seaborn jointplot 軸,對數刻度,kind="hex"

[英]Seaborn jointplot axis on log scale with kind="hex"

我想顯示下面的圖表,但 x 軸在對數刻度上。

df = pd.DataFrame(np.random.randint(0,100,size=(100, 2)), columns=list('XY'))
sns.jointplot(data=df,x='X',y='Y',height=3,kind='hex')

在此處輸入圖像描述

需要明確的是,我不想先記錄 X,而是希望數字保持不變,但軸之間的距離會發生變化。 在 altair 中,它看起來像下面這樣(我不能在 altair 中做十六進制,但如果我錯了請糾正我):

在此處輸入圖像描述

編輯:Matt 建議添加 xscale="log"。 那讓我很接近那里。 我只需要一種從冪到普通整數的方法。

在此處輸入圖像描述

您可以使用xscale="log"關鍵字參數,它會傳遞給 seaborn 在后台使用的 Matplotlib hexbin function。例如,

sns.jointplot(data=df, x='X', y='Y' ,height=3, kind='hex')

如評論中所述,有多種方法可以將軸刻度標簽設置為非科學格式。 最簡單的

import matplotlib.ticker as mticker

grid = sns.jointplot(data=df, x='X', y='Y', height=3, kind='hex', xscale="log")
grid.ax_joint.xaxis.set_major_formatter(mticker.ScalarFormatter())

相反,如果您希望使用逗號將 1000 格式化為 1,000,可以改為:

grid.ax_joint.xaxis.set_major_formatter(mticker.StrMethodFormatter("{x:,.0f}"))

暫無
暫無

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

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