【seaborn】jointplot 改变图片长宽比,非方形

在撰写论文时,使用seaborn的jointplot绘制美观的数据图变得重要。然而,默认情况下,图像的长宽比为1:1,无法通过figsize参数改变。通过查阅资料,发现在seaborn的jointplot中只有一个height参数。经过搜索,最终在stackoverflow上找到解决方案,可以调整图像尺寸。

最近开始写论文了,画好看图是非常有必要的。matplolib虽然能满足基础需求,但是总感觉没那么高大上。简单接触seaborn后,发现确实集成度很高,很简单的API就可以画出美观的数据图。但是市面上应该还没有系统的数据,主要参考都是官网的例子。出现一些其他问题就只能自己想办法去网上搜了。
比如今天的使用jointplot时发现,默认格式图像长宽比是1:1,传统matplotlib中的figsize关键字都无法改变图像的尺寸。而 jointplot关键字中只有height,无法改变图像的高度。

height: numeric
Size of the figure (it will be square).

http://seaborn.pydata.org/generated/seaborn.jointplot.html?highlight=jointplot#seaborn.jointplot

国内网找了一圈没有有效的解决方案,最终还是在stackoverflow上找到了如下代码:

grid = sns.jointplot(...)
grid.fig.set_figwidth(
### 基本介绍 `seaborn.jointplot` 用于绘制两个变量的联合分布图,同时显示它们的边际分布。它将两个变量之间的关系可视化,能直观地看出变量间的相关性和各自的分布情况。 ### 参数说明 `seaborn.jointplot(data=None, *, x=None, y=None, hue=None, kind='scatter', height=6, ratio=5, space=0.2, dropna=False, xlim=None, ylim=None, color=None, palette=None, hue_order=None, hue_norm=None, marginal_ticks=False, joint_kws=None, marginal_kws=None, **kwargs)` [^2]。 - `data`:DataFrame 类型,包含要绘制的数据。 - `x`、`y`:数据中的列名,指定要绘制的两个变量。 - `hue`:数据中的列名,用于对数据进行分组着色。 - `kind`:图形类型,默认为 `'scatter'`,还可以是 `'reg'`(回归图)、`'resid'`(残差图)、`'kde'`(核密度图)、`'hex'`(六边形图)等。 - `height`:图形的高度(以英寸为单位),默认值为 6。 - `ratio`:联合图与边际图的高度比,默认值为 5。 - `space`:联合图与边际图之间的间距,默认值为 0.2。 - `dropna`:布尔值,是否删除包含缺失值的行,默认值为 False。 - `xlim`、`ylim`:分别指定 x 轴和 y 轴的范围。 - `color`:图形的颜色。 - `palette`:调色板,用于 `hue` 分组。 - `hue_order`:`hue` 分组的顺序。 - `hue_norm`:`hue` 变量的归一化方式。 - `marginal_ticks`:布尔值,是否在边际图上显示刻度,默认值为 False。 - `joint_kws`:传递给联合图的额外关键字参数。 - `marginal_kws`:传递给边际图的额外关键字参数。 ### 示例代码 #### 绘制默认的散点联合图 ```python import seaborn as sns import matplotlib.pyplot as plt penguins = sns.load_dataset("penguins") g = sns.jointplot(data=penguins) plt.show() ``` #### 绘制回归联合图 ```python import seaborn as sns import matplotlib.pyplot as plt tips = sns.load_dataset("tips") g = sns.jointplot(x="total_bill", y="tip", data=tips, kind="reg") plt.show() ``` #### 按分组绘制核密度联合图 ```python import seaborn as sns import matplotlib.pyplot as plt penguins = sns.load_dataset("penguins") g = sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=penguins, hue="species", kind="kde") plt.show() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值