[seaborn] seaborn学习笔记7-常用参数调整Adjustment of Common Parameters

2023-11-06

7 常用参数调整Adjustment of Common Parameters

(代码下载)
主要讲述关于seaborn通用参数设置方法,该章节主要内容有:

  1. 主题设置 themes adjustment
  2. 颜色设置 Manage colors
  3. 轴的管理 Manage axis
  4. 边距调整 Manage margins
  5. 添加注释 Add annotations

1. 主题设置 themes adjustment

  • 灰色网格 darkgrid
  • 白色网格 whitegrid
  • 黑色 dark
  • 白色 white
  • 十字叉 ticks
# Seaborn中有五种可供选择的主题下面通过set_style设置主题
# Proposed themes: darkgrid, whitegrid, dark, white, and ticks
# Data
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
data = np.random.normal(size=(20, 6)) + np.arange(6) / 2
# 灰色网格 darkgrid
sns.set_style("darkgrid")
sns.boxplot(data=data)
plt.title("darkgrid")
Text(0.5, 1.0, 'darkgrid')

png

# 白色网格 whitegrid
sns.set_style("whitegrid")
sns.boxplot(data=data);
plt.title("whitegrid")
Text(0.5, 1.0, 'whitegrid')

png

# 黑色 dark
sns.set_style("dark")
sns.boxplot(data=data);
plt.title("dark")
Text(0.5, 1.0, 'dark')

png

# 白色 white
sns.set_style("white")
sns.boxplot(data=data);
plt.title("white")
Text(0.5, 1.0, 'white')

png

# 十字叉 ticks
sns.set_style("ticks")
sns.boxplot(data=data);
plt.title("ticks")
Text(0.5, 1.0, 'ticks')

png

2. 颜色设置 Manage colors

由于Seaborn是在matplotlib之上构建的,因此Matplotlib上的大部分定制工作也适用于seaborn。seaborn中通过palette选择颜色。可用颜色有:

seaborn有三种类型的调色板: Sequential, Diverging and Discrete:
Sequential
Diverging
Discrete

# Sequential颜色调用
# Libraries
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
 
# create data
x = np.random.rand(80) - 0.5
y = x+np.random.rand(80)
z = x+np.random.rand(80)
df = pd.DataFrame({'x':x, 'y':y, 'z':z})
 
# Plot with palette
sns.lmplot( x='x', y='y', data=df, fit_reg=False, hue='x', legend=False, palette="Blues");
# reverse palette
sns.lmplot( x='x', y='y', data=df, fit_reg=False, hue='x', legend=False, palette="Blues_r");

png

png

# Diverging颜色调用
# plot
sns.lmplot( x='x', y='y', data=df, fit_reg=False, hue='x', legend=False, palette="PuOr");
# reverse palette
sns.lmplot( x='x', y='y', data=df, fit_reg=False, hue='x', legend=False, palette="PuOr_r");

png

png

# Discrete颜色调用
# library & dataset
import seaborn as sns
df = sns.load_dataset('iris')

# --- Use the 'palette' argument of seaborn
sns.lmplot( x="sepal_length", y="sepal_width", data=df, fit_reg=False, hue='species', legend=False, palette="Set1");
plt.legend(loc='lower right')

# --- Use a handmade palette 自定义颜色板
flatui = ["#9b59b6", "#3498db", "orange"]
sns.set_palette(flatui)
sns.lmplot( x="sepal_length", y="sepal_width", data=df, fit_reg=False, hue='species', legend=False);

png

png

3. 轴的管理 Manage axis

  • 标题 Title
  • 标尺 Ticks
  • 标签 labels
  • 坐标轴范围 limit
# 标题 Title
# Basic plot
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# data
height = [3, 12, 5, 18, 45]
bars = ('A', 'B', 'C', 'D', 'E')
y_pos = np.arange(len(bars))

sns.barplot(y_pos, height, color=(0.2, 0.4, 0.6, 0.6))
 
# Custom Axis title 需要调用matplotlib设置轴标题
plt.xlabel('title of the xlabel', fontweight='bold', color = 'orange', fontsize='17', horizontalalignment='center');

png

# 标尺 Ticks
sns.barplot(y_pos, height, color=(0.2, 0.4, 0.6, 0.6))
# Custom ticks 调用matplotlib tick_params控制标尺
plt.tick_params(axis='x', colors='red', direction='out', length=15, width=5)
# You can remove them:
# plt.tick_params(bottom=False)

png

# 标签 labels
sns.barplot(y_pos, height, color=(0.2, 0.4, 0.6, 0.6))
# use the plt.xticks function to custom labels
plt.xticks(y_pos, bars, color='orange', rotation=45, fontweight='bold', fontsize='17', horizontalalignment='right');
 
# remove labels
# plt.tick_params(labelbottom='off')

png

# 坐标轴范围 limit
sns.barplot(y_pos, height, color=(0.2, 0.4, 0.6, 0.6))
# Set the limit
plt.xlim(0,20);
plt.ylim(0,50);

png

4. 边距调整 Manage margins

y_pos = np.arange(len(bars))
bars = ('A','B','C','D','E')
height = [3, 12, 5, 18, 45]
sns.barplot(y_pos, height);
 
# If we have long labels, we cannot see it properly 当名字太长我们无法阅读
names = ("very long group name 1","very long group name 2","very long group name 3","very long group name 4","very long group name 5")
plt.xticks(y_pos, names, rotation=90);
# It's the same concept if you need more space for your titles
plt.title("This is\na very very\nloooooong\ntitle!");

png

# 上下边距调整
sns.barplot(y_pos, height);
 
# If we have long labels, we cannot see it properly 当名字太长我们无法阅读
names = ("very long group name 1","very long group name 2","very long group name 3","very long group name 4","very long group name 5")
plt.xticks(y_pos, names, rotation=90);
# It's the same concept if you need more space for your titles
plt.title("This is\na very very\nloooooong\ntitle!")

# Thus we have to give more margin 通过subplots_adjust调整上下区域所占范围
plt.subplots_adjust(bottom=0.4)
plt.subplots_adjust(top=0.7)

png

5. 添加注释 Add annotations

  • 添加文本 add text
  • 添加长方形 add rectangle
  • 添加圆 add circle
  • 添加参考线 add reference line
  • 添加公式 add formula
# 添加文本 add text
df=pd.DataFrame({'x': range(1,101), 'y': np.random.randn(100)*15+range(1,101) })
sns.regplot( data=df, x="x", y="y", marker='o')
 
# Annotate with text + Arrow 添加文本和箭头
plt.annotate(
# Label and coordinate
# xy箭头尖的坐标,xytest文本起始位置
'This point is interesting!', xy=(20, 40), xytext=(0, 80),
# Custom arrow 添加箭头
arrowprops=dict(facecolor='black', shrink=0.05)
);
C:\ProgramData\Anaconda3\lib\site-packages\scipy\stats\stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.
  return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval

png

# 添加长方形 add rectangle
# libraries
import matplotlib.patches as patches
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
 
# Data 数据
df=pd.DataFrame({'x': range(1,101), 'y': np.random.randn(100)*15+range(1,101) })
 
# Plot
fig1 = plt.figure()
# 添加子图
ax1 = fig1.add_subplot(111)
sns.regplot( data=df, x="x", y="y", marker='o')
 
# Add rectangle 添加长方形
ax1.add_patch(
    patches.Rectangle(
        (20, 25), # (x,y) 左上角坐标
        50, 50, # width and height 宽高
        # You can add rotation as well with 'angle'
        alpha=0.3, facecolor="red", edgecolor="black", linewidth=3, linestyle='solid')
);

png

# 添加圆 add circle
# Data
df=pd.DataFrame({'x': range(1,101), 'y': np.random.randn(100)*15+range(1,101) })
 
# Plot
fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
sns.regplot( data=df, x="x", y="y", marker='o')
 
# Annotation
ax1.add_patch(
    patches.Circle(
        (40, 35), # (x,y) 圆心
        30, # radius 半径
        alpha=0.3, facecolor="green", edgecolor="black", linewidth=1, linestyle='solid')
);

png

# 添加参考线 add reference line
# Plot
sns.regplot( data=df, x="x", y="y", marker='o')
# Annotation
# 添加垂直参考线
plt.axvline(40, color='r');
# 添加水平参考系
plt.axhline(50, color='green');

png

# 添加公式 add formula
df=pd.DataFrame({'x': range(1,101), 'y': np.random.randn(100)*15+range(1,101) })
sns.regplot( data=df, x="x", y="y", marker='o')

# Annotation
plt.text(40, 00, r'equation: $\sum_{i=0}^\infty x_i$', fontsize=20);

png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[seaborn] seaborn学习笔记7-常用参数调整Adjustment of Common Parameters 的相关文章

随机推荐

  • 如何创建自己的网址?

    如何创建自己的网址 其实网址不是创建的 我们看到网址是需要注册购买的 正确来说应该创建网站 是要有网址才能访问你的网站 下面简单说说如何创建自己的网站和注册网址 一 注册网址 有些人喜欢在创建网站前注册网址 以免看中的网址被抢走 有些人觉得
  • 执行shell脚本的方法有哪些

    1 bash data scripts37 hello sh 2 cat data scripts37 hello sh bash 3 data scripts37 hello sh 加执行权限chmod x cd data scripts
  • 排序算法-归并排序详细讲解(MergeSort)

    归并排序 归并 指合并 合在一起 归并排序 Merge Sort 是建立在归并操作上的一种排序算法 其主要思想是分而治之 若将两个有序集合并成一个有序表 称为2 路归并 与之对应的还有多路归并 怎么分 对于排序最好的情况来讲 就是只有两个元
  • shell脚本之while、until循环以及循环控制语句

    目录 一 while循环语句 1 1 语法结构 1 格式 2 案列 1 2 while死循环 1 格式 2 案例 二 until循环 1 语法结构 补充 死循环结构 2 案例 三 循环控制语句 3 1 continue 3 2 break
  • win10计算机重新启动,win10电脑一直自动重启是怎么回事?

    我们在日常使用电脑办公的过程当中偶尔会出现一些小故障 今天小编想要给大家分享其中最常见的一个问题就是win10电脑出现一直重启的这个故障问题 电脑重启之后开机 结果又进入了重启 一直无限循环 这是怎么回事 其实遇到这种问题千万别急 今天小编
  • 邀请参与第四季度 Flutter 开发者调查

    外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img Cdl2Tvp0 1671677470593 https devrel andfun cn devrel posts 2022 12 ETzaca png 本次调研
  • 彻底解决VScode C++调试的路径问题(配置PATH以及快捷键优化)

    彻底解决VScode C 调试的路径问题 配置PATH以及快捷键优化 前言 用VScode调试C 的难题可谓是人尽皆知 引得各路神仙大佬来解决 目前的主流方法有改变运行程序的路径 参考这篇文章 还有改变本地的Unicode编码设置的 也非常
  • [36]javascript入门

    入门程序
  • 【系统篇 / 安装】❀ 01. 安装镜像 ISO 文件下载 ❀ Windows Server 2016

    简介 2016年10月13日 微软正式发布Windows Server 2016和System Center 2016 全球可用 用户可以到MSDN VLSC 批量授权服务中心 获取下载 服务器2016走的路线和以前一样 新的Windows
  • 帆软认证报表工程师FCRA试题

    Part 1 判断题 总分 48分 第1题 判断题 智能运维 负载管理中 实时负载通过使用图表直观的展示当前系统的最多最近半小时内存利用率和CPU利用率 满分 2分 正确答案 A 第2题 判断题 远程设计连接时 本地设计器版本和服务器工程的
  • 全国程序员高考卷曝光,你能答对几题?

    普通高等学校招生全国统一考试 程序员卷 1 本试卷分为单选题 简答题 编程题三种类型 选择题每题5分 简答题每题10分 编程题每题20分 2 考试时间为30分钟 3 全部答案请填写在本文评论区 4 考试结束后 请将本试卷分享到CSDN AP
  • java 模拟用户注册

    模拟用户注册 用户输入用户名 密码 确认密码 生日 格式为yyyy MM dd 手机号 长度为11位 并且以13 15 17 18开头的手机号码为正确 之后 判断信息正确后 验证用户是否重复 重复则给出相应提示 不重复则注册成功 此案例使用
  • web安全攻防渗透测试实训笔记

    1 Nmap的基本 Nmap ip 6 ip Nmap A 开启操作系统识别和版本识别功能 T 0 6档 设置扫描的速度 一般设置T4 过快容易被发现 v 显示信息的级别 vv显示更详细的信息 192 168 1 1 24 扫描C段 192
  • Class 03 - R语言的 Vectors(向量) 与 lists(列表)

    Class 03 R语言的 Vector与 列表 list R语言语法 脚本文件的创建 保存 和修改名称 第一个函数 使用帮助功能查看函数详细说明 语法问题 变量与赋值 定义变量名称格式 调用变量 R中的数据结构 Vectors 向量 创建
  • STM32移植FreeRTOS的Tips

    转自 http bbs armfly com read php tid 7140 1 在FreeRTOS的demo文件夹中拷贝对应的FreeRTOSConfig h文件后 需要加入一行 define configUSE MUTEXES 1
  • Http协议和Https协议的区别

    Http协议我们就不多说了 这篇主要就是简单的提提Https协议 Https协议是基于Http协议开发的 它是一个安全的通信通道 用于客户端和服务器端进行信息的交换 它主要使用了安全套接字层 SSL 来来进行信息的交换的 简单的说它就是Ht
  • 【设计模式】用Java实现装饰模式

    一 装饰模式介绍与使用场景 装饰模式 Decorator Pattern 是一种结构型设计模式 它允许在不改变现有对象结构的情况下 动态地将责任附加到对象上 装饰模式通过将对象包装在装饰器对象中 形成一条装饰链 每个装饰器对象都可以在被装饰
  • QML笔记(六)之QML自定义信号的创建与使用

    一 前言 信号槽是Qt的核心所在 不管是对于QtWidgets还是QML都是 连接自带的信号槽很容易就就比较容易 但有时候自带的信号槽不能满足我们的业务需要 于是就需要自定义信号 在需要的时候扔出 然后处理 自定义信号的使用场景一般都是组件
  • 概率论与数理统计(一)随机事件,样本空间

    1 D 2 A 3 C 4 AD 5 正确答案 1 2 1 3 2 1 2 3 3 1 3 2
  • [seaborn] seaborn学习笔记7-常用参数调整Adjustment of Common Parameters

    文章目录 7 常用参数调整Adjustment of Common Parameters 1 主题设置 themes adjustment 2 颜色设置 Manage colors 3 轴的管理 Manage axis 4 边距调整 Man