Search

Travel Tips

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Lifestyle

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Hotel Review

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Python数据可视化

对图表整体颜色、比例等进行风格设置,包括颜色色板等 调用系统风格进行数据可视化 set() / set_style() / axes_style() / despine() / set_context()

整体风格设置


对图表整体颜色、比例等进行风格设置,包括颜色色板等

调用系统风格进行数据可视化


set() / set_style() / axes_style() / despine() / set_context()


导入库

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

# 创建正弦函数及图表


def sinplot(flip=1):
    x = np.linspace(0, 14, 100)
    for i in range(1, 7):
        plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
sinplot()
# 创建正弦函数,及出图


image.png

# 1、set() 

# 简单切换为seaborn图表风格
# 已设置会一直存在,除非刷新,重新运行
sns.set()
sinplot()

image.png

# 2、set_style()

# 切换seaborn图表风格
# 风格选择包括:"white", "dark", "whitegrid", "darkgrid", "ticks"
fig = plt.figure(figsize=(6,6))
ax1 = fig.add_subplot(2,1,1)                 
sns.set_style("whitegrid")
data = np.random.normal(size=(20, 6)) + np.arange(6) / 2
sns.boxplot(data=data)
plt.title('style - whitegrid')
# 仍然可以使用matplotlib的参数
ax2 = fig.add_subplot(2,1,2)    
#sns.set_style("dark")
sinplot()
# 子图显示

image.png

# 3、despine()

# 设置图表坐标轴
# seaborn.despine(fig=None, ax=None, top=True, right=True, left=False, 
# bottom=False, offset=None, trim=False)
sns.set_style("ticks")
# 设置风格
fig = plt.figure(figsize=(6,9))
plt.subplots_adjust(hspace=0.3)
# 创建图表
ax1 = fig.add_subplot(3,1,1)  
sinplot()
sns.despine()
# 删除了上、右坐标轴
# offset 偏移坐标轴  
ax2 = fig.add_subplot(3,1,2)
sns.violinplot(data=data)
#sns.despine(offset=10, trim=True)
# offset:与坐标轴之间的偏移
# trim:为True时,将坐标轴限制在数据最大最小值
ax3 = fig.add_subplot(3,1,3)
sns.boxplot(data=data, palette="deep")
#sns.despine(left=True, right = False)
# top, right, left, bottom:布尔型,为True时不显示, 上下左右坐标轴的显示

image.png

# 4、axes_style()

# 设置局部图表风格,可学习和with配合的用法
with sns.axes_style("darkgrid"):
    plt.subplot(211)
    sinplot()
# 设置局部图表风格,用with做代码块区分
sns.set_style("whitegrid")
plt.subplot(212)
sinplot()
# 外部表格风格

image.png

# 5、set_context()

# 设置显示比例尺度
# 不同的比例尺度:选择包括:'paper', 'notebook', 'talk', 'poster'
sns.set_context("talk")
sinplot()
# 默认为notebook

image.png

 调色盘


对图表整体颜色、比例等进行风格设置,包括颜色色板等
调用系统风格进行数据可视化
color_palette()
# 1、color_palette()
# 默认风格
# 默认6种颜色:deep, muted, pastel, bright, dark, colorblind
# seaborn.color_palette(palette=None, n_colors=None, desat=None)
current_palette = sns.color_palette()
sns.palplot(current_palette)

image.png

# 其他颜色风格

# 风格内容:Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, 

# BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu, GnBu_r, Greens, Greens_r, Greys, Greys_r, OrRd, OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, 

# Paired, Paired_r, Pastel1, Pastel1_r, Pastel2, Pastel2_r, PiYG, PiYG_r, PuBu, PuBuGn, PuBuGn_r, PuBu_r, PuOr, PuOr_r, PuRd, PuRd_r, Purples,

# Purples_r, RdBu, RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r, RdYlGn, RdYlGn_r, Reds, Reds_r, Set1, Set1_r, Set2, Set2_r, Set3, 

# Set3_r, Spectral, Spectral_r, Wistia, Wistia_r, YlGn, YlGnBu, YlGnBu_r, YlGn_r, YlOrBr, YlOrBr_r, YlOrRd, YlOrRd_r, afmhot, afmhot_r, 

# autumn, autumn_r, binary, binary_r, bone, bone_r, brg, brg_r, bwr, bwr_r, cool, cool_r, coolwarm, coolwarm_r, copper, copper_r, cubehelix, 

# cubehelix_r, flag, flag_r, gist_earth, gist_earth_r, gist_gray, gist_gray_r, gist_heat, gist_heat_r, gist_ncar, gist_ncar_r, gist_rainbow, 

# gist_rainbow_r, gist_stern, gist_stern_r, gist_yarg, gist_yarg_r, gnuplot, gnuplot2, gnuplot2_r, gnuplot_r, gray, gray_r, hot, hot_r, hsv, 

# hsv_r, icefire, icefire_r, inferno, inferno_r, jet, jet_r, magma, magma_r, mako, mako_r, nipy_spectral, nipy_spectral_r, ocean, ocean_r, 

# pink, pink_r, plasma, plasma_r, prism, prism_r, rainbow, rainbow_r, rocket, rocket_r, seismic, seismic_r, spectral, spectral_r, spring, 

# spring_r, summer, summer_r, terrain, terrain_r, viridis, viridis_r, vlag, vlag_r, winter, winter_r


sns.palplot(sns.color_palette("Reds", 8))
# 这里颜色风格为 hls
# 颜色色块个数为8个
# 风格颜色反转(不是所有颜色都可以反转):Blues/Blues_r

image.png


# 分组颜色设置 - "Paired"


sns.palplot(sns.color_palette("Paired",8))

image.png

# 2、设置亮度,饱和度

# 可用方法:
# ① husl_palette([n_colors, h, s, l])
# ② hls_palette([n_colors, h, l, s])
sns.palplot(sns.hls_palette(8, l=.3, s=.8))
# l → 亮度
# s → 饱和度

image.png

# 3、cubehelix_palette()

# 按照线性增长计算,设置颜色
sns.palplot(sns.cubehelix_palette(8, gamma=2))
sns.palplot(sns.cubehelix_palette(8, start=.5, rot=-.75))
sns.palplot(sns.cubehelix_palette(8, start=2, rot=0, dark=0, light=.95, reverse=True))
# n_colors → 颜色个数
# start → 值区间在0-3,开始颜色
# rot → 颜色旋转角度
# gamma → 颜色伽马值,越大颜色越暗
# dark,light → 值区间0-1,颜色深浅
# reverse → 布尔值,默认为False,由浅到深

image.png

# 4、dark_palette(color[, n_colors, reverse, ...]) / light_palette(color[, n_colors, reverse, ...])

# 颜色深浅
# 区别
sns.palplot(sns.light_palette("green"))   # 按照green做浅色调色盘
#sns.palplot(sns.color_palette("Greens"))  # cmap为Greens风格
sns.palplot(sns.dark_palette("red", reverse=True))   # 按照blue做深色调色盘
# reverse → 转制颜色


image.png

# 5、diverging_palette()

# 创建分散颜色
# seaborn.diverging_palette(h_neg, h_pos, s=75, l=50, sep=10, n=6, 
# center='light', as_cmap=False)¶
sns.palplot(sns.diverging_palette(145, 280, s=85, l=25, n=7))
# h_neg, h_pos → 起始/终止颜色值
# s → 值区间0-100,饱和度
# l → 值区间0-100,亮度
# n → 颜色个数
# center → 中心颜色为浅色还是深色“light”,“dark”,默认为light


image.png

# 5、diverging_palette()

# 创建分散颜色
plt.figure(figsize = (8,6))
x = np.arange(25).reshape(5, 5)
cmap = sns.diverging_palette(200, 20, sep=20, as_cmap=True)
sns.heatmap(x, cmap=cmap)

image.png

# 设置调色板后,绘图创建图表


sns.set_style("whitegrid")
# 设置风格
with sns.color_palette("PuBuGn_d"):
    plt.subplot(211)
    sinplot()
sns.set_palette("husl")
plt.subplot(212)
sinplot()
# 绘制系列颜色

image.png

这是一个简介
    互联网冲浪金牌选手。赖床世锦赛纪录保持者,拖延俱乐部顶级VIP,夜宵外卖一级鉴赏师,国家脱单脱贫重点扶持对象,中央戏精学院优秀学生,亚洲酸柠檬推广大使,国家一级退堂鼓表演艺术家。
评论 (125)
评论

我是 s enim interduante quis metus. Duis porta ornare nulla ut bibendum

Rosie

6 minutes ago

Sed ac lorem felis. Ut in odio lorem. Quisque magna dui, maximus ut commodo sed, vestibulum ac nibh. Aenean a tortor in sem tempus auctor

Agatha Christie

December 4, 2020 at 3:12 pm

Sed ac lorem felis. Ut in odio lorem. Quisque magna dui, maximus ut commodo sed, vestibulum ac nibh. Aenean a tortor in sem tempus auctor

Steven

December 4, 2020 at 3:12 pm

Donec in ullamcorper quam. Aenean vel nibh eu magna gravida fermentum. Praesent eget nisi pulvinar, sollicitudin eros vitae, tristique odio.

Danielle Steel

December 4, 2020 at 3:12 pm