前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据分析 ——数据可视化matplotlib(一)

数据分析 ——数据可视化matplotlib(一)

作者头像
andrew_a
发布2019-09-09 17:55:26
1.7K0
发布2019-09-09 17:55:26
举报
文章被收录于专栏:Python爬虫与数据分析

在接下来的文章中主要介绍如何利用python 中的matplotlib进行数据的可视化展示。

matplotlib是以MATLAB为基础,仿照MATLAB的函数形式的绘图接口,并将这些函数封装在matplotlib.pyplot模块中。方便python用户直接使用。

在这篇文章中主要介绍matplotlib的参数配置,颜色配置,以及面板布局。

一、matplotlib基本构成

首先我们设置一个空的面板:

代码语言:javascript
复制
import matplotlib.pyplot as plt
# 画一个空图,面板,不传数据
plt.figure()
plt.plot()
plt.xlabel("X label")
plt.ylabel("Y label") 
plt.title("title") 
plt.show()

运行结果如下图:

我们在给出一个sin函数的图像:

代码语言:javascript
复制
import matplotlib.pyplot as plt
# 画sin函数
x = np.arange(0, 360)
y = np.sin(x * np.pi / 180)
plt.figure()
plt.plot(x, y)
plt.xlabel("X")
plt.ylabel("Y") 
plt.title("sin") 
plt.show()

通过上面的代码和图,先简单了解一下matplotlib画图的构成。一个matplotlib图像是由figure(面板), axes(子图),xaxis/yaxis(坐标轴), line(坐标轴线), Tick(坐标刻度),label (坐标标签), title(图名)等构成。

所属关系如下图:

在绘图时利用figure创建窗口,subplot创建子图。在上面我们没有展现出来,在后面的例子中会在详细的介绍。所有的绘画只能在子图上进行。plt表示当前子图,若没有就创建一个子图。通常我们会省去窗口这一步,所以在一些教程中是直接使用plt进行画图。

二、 matplotlib参数配置

接下来介绍一下常用的配置参数,线条相关,以及常见颜色设置。

1)配置参数

figure: 在任何绘图之前,我们需要一个Figure对象,可以理解成我们需要一张画板才能开始绘图。它控制面板、边界颜色、图形大小、和子区( subplot)设置 。

axes/subplot: 在拥有Figure对象之后,在作画前我们还需要轴,没有轴的话就没有绘图基准,所以需要添加Axes。也可以理解成为真正可以作画的纸。设置坐标轴边界和表面的颜色、坐标刻度值大小和网格的显示 。

font: 字体集(font family)、字体大小和样式设置 。

grid: 设置网格颜色和线性 。

legend: 设置图例和其中的文本的显示 。

line: 设置线条(颜色、线型、宽度等)和标记 。

xticks和yticks: 为x,y轴的主刻度和次刻度设置颜色、大小、方向,以及标签大小。

2)线条相关属性标记:

代码语言:javascript
复制
线条风格linestyle或ls         描述

‘-‘                         实线  
‘:’                         虚线   
‘–’                         破折线 
‘None’,’ ‘,’’               什么都不画    
‘-.’                        点划线

3)线条标记:

代码语言:javascript
复制
标记maker            描述

‘o’                 圆圈  
‘.’                 点
‘D’                 菱形  
‘s’                 正方形
‘h’                 六边形1    
‘*’                 星号
‘H’                 六边形2    
‘d’                 小菱形
‘_’                 水平线 
‘v’                 一角朝下的三角形
‘8’                 八边形 
‘<’                 一角朝左的三角形
‘p’                 五边形 
‘>’                 一角朝右的三角形
‘,’                 像素  
‘^’                 一角朝上的三角形
‘+’                 加号  
‘\  ‘               竖线
‘None’,’’,’ ‘       无   
‘x’                 X

4)颜色:

代码语言:javascript
复制
别名             颜色

b               蓝色  
g               绿色
r               红色  
y               黄色
c               青色
k               黑色   
m               洋红色 
w               白色

如果上面颜色不够用,还可以通过其他方式来定义颜色值:

1、使用HTML十六进制字符串 color=’#123456’ 使用合法的HTML颜色名字(’red’等)。

2、也可以传入一个归一化到[0,1]的RGB元组。color=(0.3,0.3,0.4)。

3、或者查颜色表。

三、构造子图

1)add_subplot直接构造子图

代码语言:javascript
复制
fig = plt.figure()
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)
ax3 = fig.add_subplot(224)

通过fig.add_subplot(221)的方式生成Axes,前面两个参数确定了面板的划分,例如 2, 2会将整个面板划分成 2 * 2 的方格,第三个参数取值范围是 [1, 2*2] 表示第几个Axes。如上图所示。

2)二维数组构建子图

代码语言:javascript
复制
fig, axes = plt.subplots(nrows=2, ncols=2)
axes[0,0].set(title='Upper Left')
axes[0,1].set(title='Upper Right')
axes[1,0].set(title='Lower Left')
axes[1,1].set(title='Lower Right')

fig面板不变,上图的axes是为二维数组的形式, 在循环绘图时,很方便。但是我们很明显的可以看到上图的缺点,下面两图的标题和上面的两图的label重合了。

3)多子图布局

代码语言:javascript
复制
fig, axes = plt.subplots(nrows=2, ncols=2)
axes[0,0].set(title='Upper Left')
axes[0,1].set(title='Upper Right')
axes[1,0].set(title='Lower Left')
axes[1,1].set(title='Lower Right')
fig.subplots_adjust(wspace=0.5, hspace=0.6,
                    left=0.125, right=0.9,
                    top=0.9,    bottom=0.1)
# fig.tight_layout() #自动调整布局,使标题之间不重叠
plt.show()

通过fig.subplots_adjust()我们修改了子图水平之间的间隔wspace=0.5,垂直方向上的间距hspace=0.6,左边距left=0.125 等等,这里数值都是百分比的。以 [0, 1] 为区间,选择left、right、bottom、top 注意 top 和 right 是 0.9 表示上、右距离边距为10%。不确定怎样调整的时候,fig.tight_layout()是一个很好的选择,可以自动调整布局,使得标题不重叠。

4) Axes 和pyplot

对于下面的代码,很简单并易懂,很多人喜欢下面的作画方式, 但是这只适合简单的绘图,快速的将图绘出。在处理复杂的绘图工作时,我们还是需要使用 Axes 来完成作画的。

代码语言:javascript
复制
x = np.arange(0, 360)
y = np.sin(x * np.pi / 180)
plt.plot(x, y, color='red', linewidth=2)
plt.show()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python爬虫scrapy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3)线条标记:
  • 4)颜色:
  • 4) Axes 和pyplot
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档