如何在保持原来的宽高比的情况下按百分比增加图形的大小?

Aki*_*ira 1 matplotlib python-3.x seaborn

我有以下代码来绘制图形

import pandas as pd
import urllib3
import seaborn as sns

decathlon = pd.read_csv("https://raw.githubusercontent.com/leanhdung1994/Deep-Learning/main/decathlon.txt", sep='\t')

fig = sns.scatterplot(data = decathlon,
                      x = '100m', y = 'Long.jump',
                      hue = 'Points', palette = 'viridis')

sns.regplot(data = decathlon,
            x = '100m', y = 'Long.jump',
            scatter = False)
Run Code Online (Sandbox Code Playgroud)

我阅读了类似问题的答案,他们使用了该选项plt.figure(figsize=(20,10))。我想保持原来的外观(宽度与长度的比例),但将图形的大小增加一定百分比以获得更好的外观。

您能否详细说明一下如何操作?


我忘记在上面的代码中添加一行%config InlineBackend.figure_format = 'svg'。不幸的是,当我在下面添加这一行时,答案不起作用。

Diz*_*ahi 5

首先,返回的对象scatterplot()是一个Axes,而不是一个数字。scatterplot()使用当前轴来绘制绘图。如果没有当前坐标区,则 matplotlib 会自动在当前图窗中创建一个坐标区。如果没有当前图形,那么 matplotlib 会自动创建一个新图形。

该数字的大小由 中的值决定rcParams['figure.figsize']。因此,在调用绘图之前,您应该创建一个与此变量中定义的纵横比相同的图形。

例如,下面的代码创建一个大小为默认图窗大小 2 倍的图窗。

tips = sns.load_dataset('tips')

fig = plt.figure(figsize= 2 * np.array(plt.rcParams['figure.figsize']))
ax = sns.scatterplot(data=tips, x="total_bill", y="tip", hue="day")
sns.regplot(data=tips, x="total_bill", y="tip", scatter=False, ax=ax)
Run Code Online (Sandbox Code Playgroud)