图表样式概述
默认图表样式
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 |
图表样式修改
两种修改,局部修改,全局修改 局部修改就是直接在函数里边修改
全局修改,就是在文件中直接修改,这样子就不会老是在代码里面修改
使用颜色
基础色
-
单词缩写表示颜色 缩写 c cyan 青色 m magenta 洋红色 y yellow 黄色 k black 黑色 r red 红色 g green 绿色 b blue 蓝色 w white 白色 -
用十六进制或者HTML模式 aliceblue #F0F8FF -
RGB color = (0.3,0.3,0.4) -
颜色映射表 matplotlib内置了很多预定义的颜色映射表,方便开发 pyplot模块提供了colormaps()函数查看所有可用的颜色映射表
所有颜色都在这,颜色映射表的名称分为有_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= '--')
添加数据标记
填充型标记 非填充型标记
plt.plot([1,2,3],[1,2,3],marker = '*')
格式化字符串
因为设置颜色,标记,线型比较麻烦,所以有一个快捷的语法
'[颜色][标记][线型]'
设置一个品红色的虚线
plt.plot([1,2,3],[1,2,3],'mo--')
设置字体
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')
填充区域
使用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()
|