[seaborn] seaborn学习笔记7-常用参数调整Adjustment of Common Parameters
7 常用参数调整Adjustment of Common Parameters(代码下载)
主要讲述关于seaborn通用参数设置方法,该章节主要内容有:
- 主题设置 themes adjustment
- 颜色设置 Manage colors
- 轴的管理 Manage axis
- 边距调整 Manage margins
- 添加注释 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')
# 白色网格 whitegrid
sns.set_style("whitegrid")
sns.boxplot(data=data);
plt.title("whitegrid")
Text(0.5, 1.0, 'whitegrid')
# 黑色 dark
sns.set_style("dark")
sns.boxplot(data=data);
plt.title("dark")
Text(0.5, 1.0, 'dark')
# 白色 white
sns.set_style("white")
sns.boxplot(data=data);
plt.title("white")
Text(0.5, 1.0, 'white')
# 十字叉 ticks
sns.set_style("ticks")
sns.boxplot(data=data);
plt.title("ticks")
Text(0.5, 1.0, 'ticks')
2. 颜色设置 Manage colors
由于Seaborn是在matplotlib之上构建的,因此Matplotlib上的大部分定制工作也适用于seaborn。seaborn中通过palette选择颜色。可用颜色有:
seaborn有三种类型的调色板: Sequential, Diverging and 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");
# 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");
# 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);
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');
# 标尺 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)
# 标签 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')
# 坐标轴范围 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);
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!");
# 上下边距调整
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)
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
# 添加长方形 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')
);
# 添加圆 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')
);
# 添加参考线 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');
# 添加公式 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);
[seaborn] seaborn学习笔记7-常用参数调整Adjustment of Common Parameters的更多相关文章
- Python学习笔记之常用函数及说明
Python学习笔记之常用函数及说明 俗话说"好记性不如烂笔头",老祖宗们几千年总结出来的东西还是有些道理的,所以,常用的东西也要记下来,不记不知道,一记吓一跳,乖乖,函数咋这么多 ...
- golang学习笔记8 beego参数配置 打包linux命令
golang学习笔记8 beego参数配置 打包linux命令 参数配置 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/mvc/contro ...
- python3.4学习笔记(十) 常用操作符,条件分支和循环实例
python3.4学习笔记(十) 常用操作符,条件分支和循环实例 #Pyhon常用操作符 c = d = 10 d /= 8 #3.x真正的除法 print(d) #1.25 c //= 8 #用两个 ...
- python3.4学习笔记(六) 常用快捷键使用技巧,持续更新
python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...
- git学习笔记:常用命令总结
本文根据廖雪峰的博客,记录下自己的学习笔记.主要记录常用的命令,包括仓库初始化.添加文件.提交修改.新建分支.内容暂存.分支管理.标签管理等内容. git是分布式版本控制系统. 首先是安装,从官网下载 ...
- JVM笔记-GC常用参数设置
GC常用参数 -Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间, -Xms -Xmx 一般设置成一样大小, -XX:+UseTLAB 使用TLAB,默认打开 -XX:+Print ...
- java web jsp学习笔记--概述-常用语法,指令,动作元素,隐式对象,域对象
JSP学习笔记 1.什么是jsp JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP/Servlet规范.JS ...
- CSAPP阅读笔记-gcc常用参数初探-来自第三章3.2的笔记-P113
gcc是一种C编译器,这次我们根据书上的代码尝试着使用它. 使用之前,先补充前置知识.编译器将源代码转换为可执行代码的流程:首先,预处理器对源代码进行处理,将#define指定的宏进行替换,将#inc ...
- python自动化测试学习笔记-5常用模块
上一次学习了os模块,sys模块,json模块,random模块,string模块,time模块,hashlib模块,今天继续学习以下的常用模块: 1.datetime模块 2.pymysql模块(3 ...
随机推荐
- 【linux】 第1回 linux运维基础
目录 1. 运维的本质 2. 电脑与服务器 2.1 电脑的种类 2.2 服务器种类 2.3 服务器品牌 2.4 服务器尺寸 2.5 服务器内部组成 3. 磁盘阵列 4. 系统简介 5. 虚拟化 6. ...
- YOLOv5】LabVIEW+OpenVINO让你的YOLOv5在CPU上飞起来
前言 上一篇博客给大家介绍了使用opencv加载YOLOv5的onnx模型,但我们发现使用CPU进行推理检测确实有些慢,那难道在CPU上就不能愉快地进行物体识别了吗?当然可以啦,这不LabVIEW和O ...
- composer 报错 The "https://mirrors.aliyun.com/composer/p....json" file could not be downloaded (HTTP/1.1 404 Not Found)
[Composer\Downloader\TransportException] The "https://mirrors.aliyun.com/composer/p/provider-20 ...
- 在Centos7上安装JDK1.8和tomcat8.5的步骤和过程(亲测可用)
文章目录 1.在阿里云(Linux)Centos7上安装JDK1.8步骤过程 2.阿里云(Linux)centos7上安装Tomcat8.5步骤过程记录: 卸载JDK Centos7一般都会带有自己的 ...
- 齐博x1当前URL标签
当前URL标签 {:get_url('location')} 当前URL的二维码标签 {:urls('index/qrcode/index')}?url={:urlencode(get_url('lo ...
- Tesla-E380,4K eDP一键点屏神器问世
eDP屏快速点亮,EDID回读, eDP屏调试 是否为点屏的准备工作感到烦躁: 1)查找LCD模组的数据手册(常常还未必能找着) 2)在上位机软件或者单片机程序里设置一大堆的LCD屏参,这个频率,那个 ...
- 测试架构师CAP原理(最简单)
测试架构师CAP原理(最简单) 很多人都不是很了解CAP理论,其实CAP很简单,不要想复杂了! C:一致性,就是数据一致性,就是数据不出错! A:可用性,就是说速度快,不延迟,无论请求成功失败都很快返 ...
- 解决ffmpeg的播放摄像头的延时优化问题(项目案例使用有效)
在目前的项目中使用了flv的播放摄像头的方案,但是延时达到了7-8秒,所以客户颇有微词,没有办法,只能开始优化播放延时的问题,至于对接摄像头的方案有好几种,这种咱们以后在聊,今天只要聊聊聊优化参数的问 ...
- ES6 学习笔记(二)解构赋值
一.数组的解构赋值 1.基本用法 ES6允许按照一定模式从数组和对象中提取值,然后对变量进行赋值,该操作即为解构 如: let [a,b,c]=[1,2,3]; console.log(a,b,c) ...
- webpack4--按需加载
在做单页面应用的过程中,通常利用webpack打包文件,将依赖的外部问价单独打一个vendor.js.这样就会有个问题,这个文件会随着你引用的包的增多,体积会越来越大.在路由中利用import 引用文 ...