[英]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.