簡體   English   中英

seaborn plot 和 pivot 表中的科學記數法

[英]Scientific notation in seaborn plot and pivot table

我正在嘗試使用 seaborn plot 到 plot 我的二手車數據集,我在 x 軸上得到科學記數法而不是實際數字。 它也會影響 pivot 數據。 請提出一種刪除科學記數法的方法。

代碼:

plt.figure(figsize=(15,7))
sns.scatterplot(x='Price_in_Lac',y='Kilometers_Driven',hue='Location',data=df)
---------------------------------------------------------------
df_hm =df.pivot_table(index = 'Brand',columns ='Location',values ="Price_in_Lac",aggfunc=np.median)
f, ax = plt.subplots(figsize=(15,10))
sns.heatmap(df_hm,   cmap='coolwarm',linewidths=.5, annot=True, ax=ax);

散點圖

數據透視表

對於scatterplot ,您可以使用ax.xaxis.get_major_formatter().set_scientific(False)刪除科學記數法和....set_useOffset(False)

這是一個使用企鵝數據集的示例,將長度轉換為納米以獲得更大的數字:

import matplotlib.pyplot as plt
from matplotlib.ticker import StrMethodFormatter
import seaborn as sns

penguins = sns.load_dataset("penguins")
penguins["flipper_length_nm"] = penguins["flipper_length_mm"] * 1000000
penguins["bill_length_nm"] = penguins["bill_length_mm"] * 1000000
plt.figure(figsize=(15, 7))
ax = sns.scatterplot(x='flipper_length_nm', y='bill_length_nm', hue='species', data=penguins)
ax.xaxis.get_major_formatter().set_scientific(False)
ax.xaxis.get_major_formatter().set_useOffset(False)
ax.yaxis.get_major_formatter().set_scientific(False)
ax.yaxis.get_major_formatter().set_useOffset(False)

左邊是原始格式,右邊是去掉科學記數法: 刪除散點圖中的科學記數法

對於顏色條,您需要訪問它的ax ,例如使用最后創建的顏色條( fig.axes[-1] ):

import matplotlib.pyplot as plt
from matplotlib.ticker import StrMethodFormatter
import seaborn as sns
import numpy as np

penguins = sns.load_dataset("penguins")
penguins["flipper_length_nm"] = penguins["flipper_length_mm"] * 1000000
penguins["bill_length_nm"] = penguins["bill_length_mm"] * 1000000

df_hm = penguins.pivot_table(index='sex', columns='species', values="flipper_length_nm", aggfunc=np.median)
fig, ax = plt.subplots(figsize=(10, 5))
sns.heatmap(df_hm, cmap='coolwarm', linewidths=.5, annot=True, ax=ax)
cbar_ax = fig.axes[-1]
cbar_ax.yaxis.get_major_formatter().set_scientific(False)
cbar_ax.yaxis.get_major_formatter().set_useOffset(False)
plt.tight_layout()
plt.show()

刪除了科學記數法的顏色條

PS:如果你想要千位分隔符,你可以使用ax.yaxis.set_major_formatter(StrMethodFormatter('{x:,.0f}'))

如另一個答案中所述,如果您還想更改注釋的格式,則可以使用sns.heatmap(...,fmt='.0f') (或fmt=',.0f'獲得數千分隔器)。

Seaborn 的heatmap有一個fmt參數,用於格式化注釋。

請參閱此處的文檔。

您可以在指定fmt='.2f'fmt='.0f'的熱圖中擺脫科學記數法

sns.heatmap(df_hm, cmap='coolwarm', linewidths=.5, annot=True, ax=ax, fmt='.2f');

暫無
暫無

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

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