Python数据可视化~图表样式的美化

图表样式的美化

  • 图表样式概述
    • 默认图表样式
    • 图表样式修改
    • 使用颜色
    • 选择线型
    • 添加数据标记
    • 格式化字符串
    • 设置字体
    • 切换主题风格
    • 填充区域

图表样式概述

默认图表样式

matplotlib绘制图像的时候,会读取本地的配置文件matplotlibrc,通过matplotlibrc文件中的缺省的一些默认的样式,可以完成图表的一些初始化的设置,不要我们全部都一一设置

我们可以通过rc_params()函数查看全部配置选项
返回的是一个RcParams对象,RcParams对象是一个字典对象,键为配置名字,及其属性组成的配置项

所有的配置项按照对象可以分为10中配置元素
包括:lines 线条、patch图形、font字体、text文本、axes坐标系、xtick和ytick刻度、grid网格、legend图例、figure画布及savefig保存图像

配置项 说明 默认值
lines.color 线条颜色 ‘C0’
lines.linestyle 线条类型 ‘-’
lines.linewidth 线条宽度 1.5
lines.marker 线条标记 ‘None’
lines.markeredgecolor 标记边框颜色 ‘auto’
lines.markeredgewidth 标记边框宽度 1.0
lines.markerfacecolor 标记颜色 auto
lines.markersize 标记大小 6.0
font.family 系统字体 [‘sans-serif’]
font.sans-serif 无衬线字体 [‘DejaVu Sans’…
font.size 字体大小 10
font.style 字体风格 ‘normal’
axes.unicode_minus 采用Unicode编码的减号 True
axs.prop_cycle 属性循环器 cycler(‘color’,[…
figure.constrained_layout.use 使用约束布局 False

图表样式修改

两种修改,局部修改,全局修改
局部修改就是直接在函数里边修改

全局修改,就是在文件中直接修改,这样子就不会老是在代码里面修改

使用颜色

基础色

  1. 单词缩写表示颜色
    缩写
    c cyan 青色
    m magenta 洋红色
    y yellow 黄色
    k black 黑色
    r red 红色
    g green 绿色
    b blue 蓝色
    w white 白色

  2. 用十六进制或者HTML模式
    aliceblue #F0F8FF

  3. RGB
    color = (0.3,0.3,0.4)

  4. 颜色映射表
    matplotlib内置了很多预定义的颜色映射表,方便开发
    pyplot模块提供了colormaps()函数查看所有可用的颜色映射表

Python数据可视化~图表样式的美化_第1张图片
所有颜色都在这,颜色映射表的名称分为有_r后缀的,和没有的,其中有_r后缀的是没有的同名反转颜色
matplotlib主要有两种使用方式,
第一种是添加关键字参数cmap
第二种是直接用

plt.scatter(x, y, c = np.random.rand(10),cmap = matplotlib.cm.jet )  //直接使用
plt.set_cmap(matplotlib.cm.jet)

选择线型

matplotlib内置了四种线条
‘:’ 短虚线 ------------
‘-.’ 点划线 ——-——-——
‘–’ 长虚线 — — — ——
‘-’ 实线 ————
实例

ax.plot(data_x,first,linewidth = 2,linestyle= '--')

Python数据可视化~图表样式的美化_第2张图片

添加数据标记

填充型标记
非填充型标记
Python数据可视化~图表样式的美化_第3张图片
Python数据可视化~图表样式的美化_第4张图片

plt.plot([1,2,3],[1,2,3],marker = '*')

Python数据可视化~图表样式的美化_第5张图片

格式化字符串

因为设置颜色,标记,线型比较麻烦,所以有一个快捷的语法

'[颜色][标记][线型]'

设置一个品红色的虚线

plt.plot([1,2,3],[1,2,3],'mo--')

Python数据可视化~图表样式的美化_第6张图片

设置字体

Text类常用的属性
fontfamily 字体类别
size 大小
stretch 字体拉伸
style 风格
variant 变体
weight 粗细
rotation 文本角度

切换主题风格

print(ms.available)

['Solarize_Light2', '_classic_test_patch', '_mpl-gallery',
'_mpl-gallery-nogrid', 'bmh', 'classic', 'dark_background', 'fast',
'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn', 'seaborn-bright',
 'seaborn-colorblind',  'seaborn-dark', 'seaborn-dark-palette',
  'seaborn-darkgrid', 'seaborn-deep', 'seaborn-muted',
  'seaborn-notebook', 'seaborn-paper', 'seaborn-pastel', 
  'seaborn-poster', 'seaborn-talk', 'seaborn-ticks',
   'seaborn-white', 'seaborn-whitegrid', 'tableau-colorblind10']

使用use函数切换风格

ms.use('seaborn-dark')

Python数据可视化~图表样式的美化_第7张图片

填充区域

使用fill()函数

fill(*args,data = None, facecolor, edgecolor, linewidth, **kewargs)

*args:表示x轴坐标,y轴坐标
facecolor:表示填充的颜色
edgecolor: 边框的颜色
linewidth:边框宽度

fill_between(x, y1, y2 = 0, where = None, interpolate = False,
 step = None, data = None, **kwargs)

where 填充区域条件
y1 > y2 表示第一个曲线在上方的时候填充

fill_betweenx(x, y1, y2 = 0, where = None, interpolate = False,
 step = None, data = None, **kwargs)

实例

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False


x = np.linspace(-np.pi, np.pi, 256, endpoint = True)
y1 , y2 = np.sin(x), np.cos(x)


plt.plot(x,y1,linewidth=1.0,color="r",linestyle='--')
plt.plot(x,y2,linewidth=1.0,color='b',alpha=0.5)
plt.xlabel('x轴')
plt.ylabel('y轴')

plt.xlim(x.min() - 0.5, x.max() * 1 + 0.5)
plt.ylim()
plt.xticks([-np.pi, -np.pi / 2, 0, np.pi / 2,np.pi],[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$\pi/2$',r'$\pi$'])
plt.yticks([-1,-0.5,-0.0,0.5,1.0])

plt.legend(['SIN','COS'])
plt.grid(visible=True,axis='both')
plt.annotate('cos(1)',xy = (1,np.cos(1)), xytext=(1 + 0.25,np.cos(1) + 0.3),arrowprops = dict(arrowstyle="->"))
plt.fill_between(x,y2,1,where=np.abs(x) < 0.5,color='green',alpha = 0.25)
plt.fill_between(x,y2,0,where=(np.abs(x) > 0.5) & (y2 > 0.5),color = 'green',alpha=0.25)
plt.show()

Python数据可视化~图表样式的美化_第8张图片

你可能感兴趣的:(python,matplotlib,开发语言)