在seaborn中,如何增加图形并另存为图像?

Rei*_*ves 2 python pandas seaborn

在python3和pandas中,我有这个数据框:

gastos_anuais.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 5 entries, 0 to 4
Data columns (total 2 columns):
ano           5 non-null int64
valor_pago    5 non-null float64
dtypes: float64(1), int64(1)
memory usage: 280.0 bytes

gastos_anuais.reset_index()
    index   ano     valor_pago
0   0   2014    13,082,008,854.37
1   3   2017    9,412,069,205.73
2   2   2016    7,617,420,559.22
3   1   2015    7,470,391,492.24
4   4   2018    7,099,199,179.11
Run Code Online (Sandbox Code Playgroud)

我做了一个点图:

import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline

sns.pointplot(x='ano', y='valor_pago', data=gastos_anuais)

plt.xticks(rotation=65)
plt.grid(True, linestyle="--")
plt.title("Gastos Destinados pelo Governo Federal (2014-2018)\n")
plt.xlabel("Anos")
plt.ylabel("Em bilhões de R$")
plt.show()
Run Code Online (Sandbox Code Playgroud)

有效。但我想:

  • 增加出现在屏幕上的图表的大小

  • 可以保存图像格式,例如.jpeg 文件

  • 我不明白为什么图表标题下方会出现“1e10”

请问,有谁知道我该怎么做?

dat*_*sta 5

增加出现在屏幕上的图表的大小

sns.set(rc={'figure.figsize':(w, h)})在绘图之前添加。例如:

sns.set(rc={'figure.figsize':(20, 5)})
Run Code Online (Sandbox Code Playgroud)

另存为.jpg

保留对绘图的引用,获取图形并保存:

p = sns.pointplot(x='ano', y='valor_pago', data=gastos_anuais)

plt.xticks(rotation=65)
#...
# All your editions with `plt`
#...

fig = p.get_figure()
fig.savefig("gastos_anuais.jpg")
Run Code Online (Sandbox Code Playgroud)

角落里的1e10是什么?

它是规模。这意味着y应该乘以轴中显示的值10^10以恢复数据的实际值。

如果要删除它,可以使用:

plt.ticklabel_format(style='plain', axis='y')
Run Code Online (Sandbox Code Playgroud)

但是您需要对这些值进行处理,因为它们会扭曲图像。