首页 > 解决方案 > 在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

我做了一个点图图表:

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()

有效。但我想:

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

标签: pythonpandasseaborn

解决方案


增加屏幕上显示的图表的大小

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

sns.set(rc={'figure.figsize':(20, 5)})

另存为.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")

角落里的1e10是什么?

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

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

plt.ticklabel_format(style='plain', axis='y')

但是你需要对这些值做一些事情,因为它们会扭曲图像。


推荐阅读