Py seaborn美化篇-比例尺度context

本文分享Python seaborn中通过比例尺度context美化图形。比例尺度(context),设置the scaling of plot elements,例如,图中文字大小、标记marker大小、线条宽度等。

不理解,没关系,下面依次举例详细介绍。

5.1 context设置图形比例尺度

5.1.1 plotting_context查看context内容

一张图的context包含的内容可通过plotting_context()查看,

sns.plotting_context()
{
    'font.size': 12.0,             # 字体大小
    'axes.labelsize': 12.0,        # 坐标轴标签大小
    'axes.titlesize': 12.0,        # 坐标轴标题大小
    'xtick.labelsize': 11.0,       # x轴刻度标签大小
    'ytick.labelsize': 11.0,       # y轴刻度标签大小
    'legend.fontsize': 11.0,       # 图例字体大小
    'legend.title_fontsize': 12.0, # 图例标题字体大小
    'axes.linewidth': 1.25,        # 坐标轴线宽度
    'grid.linewidth': 1.0,         # 网格线宽度
    'lines.linewidth': 1.5,        # 线条宽度
    'lines.markersize': 6.0,       # 线条标记大小
    'patch.linewidth': 1.0,        # 图形patch线宽度
    'xtick.major.width': 1.25,     # x轴主刻度线宽度
    'ytick.major.width': 1.25,     # y轴主刻度线宽度
    'xtick.minor.width': 1.0,      # x轴次刻度线宽度
    'ytick.minor.width': 1.0,      # y轴次刻度线宽度
    'xtick.major.size': 6.0,       # x轴主刻度线长度
    'ytick.major.size': 6.0,       # y轴主刻度线长度
    'xtick.minor.size': 4.0,       # x轴次刻度线长度
    'ytick.minor.size': 4.0        # y轴次刻度线长度
}

从以上可知,context中包含图形的各种属性,比如字体大小、线条宽度等等。

5.1.2 set_context设置context内容

set_context()可设置context,但不会改变图表整体样式。

seanborn内置了四套context设置,分别为paper, notebook, talk, poster,下面展示一下效果,

import seaborn as sns
import matplotlib.pyplot as plt

plt.figure(figsize=(12, 8))

contexts = ['notebook', 'paper', 'talk', 'poster']
for i, context in enumerate(contexts):
    sns.set_context(context)  #设置context
    plt.subplot(2, 2, i + 1)
    sns.lineplot(x=[1, 2, 3, 4], y=[3, 2, 5, 1], color="#b1283a")
    plt.title(f"context: \"{context}\"", color="#006a8e")

plt.tight_layout()
plt.show()

上图可清晰的展示context变化,图形中字体、线宽等属性的变化。

在使用某款已经内置的context方案的同时,还可以通过rc单独设置5.1.1中的任意参数,

import seaborn as sns
import matplotlib.pyplot as plt

#痛过rc独立设置xtick.labelsize
sns.set_context('poster', rc={"xtick.labelsize": 50})  
sns.lineplot(x=[1, 2, 3, 4], y=[3, 2, 5, 1], color="#b1283a")

此外,可通过font_scale设置整个图的字体缩放,

import seaborn as sns
import matplotlib.pyplot as plt

#通过font_scale设置整个图的字体缩放
sns.set_context('poster',font_scale=2)  
sns.lineplot(x=[1, 2, 3, 4], y=[3, 2, 5, 1], color="#b1283a")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_21478261

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值