为了账号安全,请及时绑定邮箱和手机立即绑定

seaborn 中的叠加图会导致 x 轴未对齐

seaborn 中的叠加图会导致 x 轴未对齐

慕盖茨4494581 2023-08-08 10:41:39
我在尝试将绘图与seaborn 叠加时遇到问题。我能够分别生成两个图fig, (ax1,ax2) = plt.subplots(ncols=2,figsize=(30, 7)) sns.lineplot(data=data1, y='MSE',x='pct_gc',ax=ax1) sns.boxplot(x="pct_gc", y="MSE", data=data2,ax=ax2,width=0.4)输出如下所示:但是当我尝试将两个图叠加时,但将两者分配给同一个斧头对象。fig, (ax1,ax2) = plt.subplots(ncols=2,figsize=(30, 7)) sns.lineplot(data=data1, y='MSE',x='pct_gc',ax=ax1) sns.boxplot(x="pct_gc", y="MSE", data=data2,ax=ax2,width=0.4)当叠加两个图时(两个图的 X 轴都从 0 到 0.069),我无法识别 Lineplot 中的 X 轴变化。我的目标是使两个图叠加,同时保持相同的 X 轴范围。
查看完整描述

1 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

Seabornboxplot创建了分类 x 轴,所有框都具有相同的距离。在内部,x 轴编号为,0, 1, 2, ...但在外部,它的标签为 0 到 0.069。


要将线图与 a 结合起来boxplot,可以直接对 matplotlibboxplot进行寻址,以便可以显式设置positions和。widths当 时patch_artist=True,将创建一个矩形(而不仅仅是直线),facecolor可以为其指定 a。manage_ticks=False防止boxplot更改 x 刻度及其限制。可以选择notch=True稍微强调中位数,但根据数据,置信区间可能太大并且看起来很奇怪。


import matplotlib.pyplot as plt

import numpy as np

import pandas as pd

import seaborn as sns


data1 = pd.DataFrame({'pct_gc': np.linspace(0, 0.069, 200), 'MSE': np.random.normal(0.02, 0.1, 200).cumsum()})

data1['pct_range'] = pd.cut(data1['pct_gc'], 10)


fig, ax1 = plt.subplots(ncols=1, figsize=(20, 7))


sns.lineplot(data=data1, y='MSE', x='pct_gc', ax=ax1)


for interval, color in zip(np.unique(data1['pct_range']), plt.cm.tab10.colors):

    ax1.boxplot(data1[data1['pct_range'] == interval]['MSE'],

                positions=[interval.mid], widths=0.4 * interval.length,

                patch_artist=True, boxprops={'facecolor': color},

                notch=False, medianprops={'color':'yellow', 'linewidth':2},

                manage_ticks=False)

plt.show()

https://img1.sycdn.imooc.com//64d1ac7200012df816960592.jpg

查看完整回答
反对 回复 2023-08-08
  • 1 回答
  • 0 关注
  • 171 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信