第37期Datawhale组队学习——数据可视化(Matplotlib)

前言

Datawhale第37期组队学习来了!这次选择的是Datawhale开源学习项目——“数据可视化(Matplotlib)”,学习周期为5.16-5.30,在此记录初次接触Matplotlib的小白学习历程。基于教程写的比较详细,这里的记录只作为补充。

学习路线

Task01:Matplotlib初相识(5.16、5.17)

matplotlib提供了两种最常用的绘图接口
1、OO模式(object-oriented style)
显式创建figure和axes,在上面调用绘图方法。
优点:清晰明了
缺点:代码编写更加复杂。(用面向对象编程接口的时候,需要创建画布、对象,需要理解每个绘制过程,才能完成相关的绘图工作。)
适合使用场景:较为复杂的画图场景

# step1 准备数据
x = np.linspace(0, 2, 100)
# step2 设置绘图样式
mpl.rc('lines', linewidth=2, linestyle='-.')
# step3 定义布局
fig, ax = plt.subplots()  
# step4 绘制图像
ax.plot(x, x, label='linear') 
ax.plot(x, x**2, label='quadratic')  
ax.plot(x, x**3, label='cubic')  
# step5 添加标签,文字和图例
ax.set_xlabel('x label') 
ax.set_ylabel('y label') 
ax.set_title("Simple Plot")  
ax.legend() ;

在这里插入图片描述

2、pyplot模式
依赖pyplot,自动创建figure和axes,并绘图的方法。
优点:编写简单,默认的 Figure 和 Axes 等对象会自动创建支持图形绘制
缺点:在多对象情况下容易使对象混乱
适合使用场景:简单画图场景

# step1 准备数据
x = np.linspace(0, 2, 100)
# step2 设置绘图样式
mpl.rc('lines', linewidth=2, linestyle='-')
# step3 绘制图像
plt.plot(x, x, label='linear') 
plt.plot(x, x**2, label='quadratic')  
plt.plot(x, x**3, label='cubic')
# step4 添加标签,文字和图例
plt.xlabel("x label")
plt.ylabel("y label")
plt.title("Simple Plot")
plt.legend();

在这里插入图片描述

知识新增:
1、 在jupyter notebook中使用matplotlib时会发现,代码运行后自动打印出类似<matplotlib.lines.Line2D at 0x23155916dc0>这样一段话,这是因为matplotlib的绘图代码默认打印出最后一个对象。如果不想显示这句话,有以下三种方法:
①在代码块最后加一个分号;
②在代码块最后加一句plt.show()
③在绘图时将绘图对象显式赋值给一个变量,如将plt.plot([1, 2, 3, 4]) 改成line =plt.plot([1, 2, 3, 4])

Task02:艺术画笔见乾坤(5.18-5.22)

在这里插入图片描述

Task03:布局格式定方圆(5.23、5.24)

一、子图
①均匀排列的子图:
plt.subplots
subplots是基于OO模式的写法,显式创建一个或多个axes对象,然后在对应的子图对象上进行绘图操作:fig, axs = plt.subplots(2, 5, figsize=(10, 4), sharex=True, sharey=True)
plt.subplot
subplot是基于pyplot模式的写法,每次在指定位置新建一个子图,并且之后的绘图操作都会指向当前子图,本质上subplot也是Figure.add_subplot的一种封装:plt.subplot(2,2,1)
除了直角坐标系,通过projection创建极坐标系下的图表:plt.subplot(projection='polar')
②非均匀排列的子图
add_gridspec
利用 add_gridspec 可以指定相对宽度比例 width_ratios 和相对高度比例参数 height_ratios
二、补充
1、常用直线的画法为: axhline, axvline, axline (水平、垂直、任意方向)
ax.axhline(0.5,0.2,0.8)
ax.axvline(0.5,0.2,0.8)
ax.axline([0.3,0.3],[0.7,0.7]);
2、加灰色网格:使用 grid
ax.grid(True)
3、设置坐标轴的规度(指对数坐标等):使用 set_xscale
axs[j].set_yscale('log')

Task04:文字图例尽眉目(5.25-5.27)

一、Figure和Axes上的文本
子图上的文本(text)
子图的x,y轴标签(xlabel、ylabel)
子图和画布的标题(title、suptitle)
子图的注解(annotate)
字体的属性设置
二、Tick上的文本
简单模式
Tick Locators and Formatters刻度位置和刻度标签的设置
a) Tick Formatters
b) Tick Locators
matplotlib.dates 特殊的设置日期型刻度格式和位置
三、legend(图例)
OO模式
pyplot模式

Task05:样式色彩秀芳华(5.28、5.29)

一、样式
①修改预定义样式
默认模式:default
内置样式:‘Solarize_Light2’, ‘_classic_test_patch’, ‘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’

②自定义样式stylesheet
样式清单后缀名为mplstyle,内容:
axes.titlesize : 24
axes.labelsize : 20
lines.linewidth : 3
lines.markersize : 10
xtick.labelsize : 16
ytick.labelsize : 16

③rcparams
修改默认rc设置的方式改变样式(rc设置都保存在matplotlib.rcParams的变量)如:
线宽→mpl.rcParams[‘lines.linewidth’] = 2
线型→mpl.rcParams[‘lines.linestyle’] = ‘–’
线宽、线型→mpl.rc(‘lines’, linewidth=4, linestyle=‘-.’)

二、颜色
单色颜色
1、RGB或RGBA
颜色用[0,1]之间的浮点数表示,四个分量按顺序分别为(red, green, blue, alpha)
plt.plot([4,5,6],[1,2,3],color=(0.1, 0.2, 0.5, 0.5))
2、HEX RGB或RGBA
用十六进制颜色码表示,同样最后两位表示透明度
plt.plot([4,5,6],[1,2,3],color=‘#0f0f0f80’)
3、灰度色阶
当只有一个位于[0,1]的值时,表示灰度色阶
plt.plot([1,2,3],[4,5,6],color=‘0.5’)
4、单字符基本颜色
‘b’, ‘g’, ‘r’, ‘c’, ‘m’, ‘y’, ‘k’, 'w’对应blue, green, red, cyan, magenta, yellow, black, white
plt.plot([1,2,3],[4,5,6],color=‘m’)
5、颜色名称
plt.plot([1,2,3],[4,5,6],color=‘tan’)

colormap多色显示
五种colormap的字符串表示和颜色图的对应关系

顺序(Sequential)。通常使用单一色调,逐渐改变亮度和颜色渐渐增加,用于表示有顺序的信息
在这里插入图片描述

发散(Diverging)。改变两种不同颜色的亮度和饱和度,这些颜色在中间以不饱和的颜色相遇;当绘制的信息具有关键中间值(例如地形)或数据偏离零时,应使用此值。
在这里插入图片描述

循环(Cyclic)。改变两种不同颜色的亮度,在中间和开始/结束时以不饱和的颜色相遇。用于在端点处环绕的值,例如相角,风向或一天中的时间。
在这里插入图片描述

定性(Qualitative)。常是杂色,用来表示没有排序或关系的信息。
在这里插入图片描述

杂色(Miscellaneous)。一些在特定场景使用的杂色组合,如彩虹,海洋,地形
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值