Matplotlib基础使用
matplotlib
一、Matplotlib基础知识
Matplotlib中的基本图表包括的元素
x轴和y轴 axis
水平和垂直的轴线x轴和y轴刻度 tick
刻度标示坐标轴的分隔,包括最小刻度和最大刻度x轴和y轴刻度标签 tick label
表示特定坐标轴的值绘图区域(坐标系) axes
实际绘图的区域坐标系标题 title
实际绘图的区域轴标签 xlabel ylabel
实际绘图的区域
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas import Series,DataFrame
%matplotlib inline # 魔法指令
包含单条曲线的图
- 注意:y,x轴的值必须为数字
x=[1,2,3,4,5]
y=[2,4,6,8,10]
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x2f5e4d8f160>]

- 绘制抛物线
x = np.linspace(-np.pi,np.pi,num=10)
y = x**2
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x2f5e4e35748>]

- 绘制正弦曲线图
x = x
y = np.sin(x)
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x2f5e4e9ab38>]

包含多个曲线的图
1、连续调用多次plot函数
plt.plot(x,y)
plt.plot(x-1,y+2)
[<matplotlib.lines.Line2D at 0x2f5e4eb78d0>]

plt.plot(x,y,x+1,y-1)
[<matplotlib.lines.Line2D at 0x2f5e51832e8>,
<matplotlib.lines.Line2D at 0x2f5e51834a8>]

2、也可以在一个plot函数中传入多对X,Y值,在一个图中绘制多个曲线
将多个曲线图绘制在一个table区域中:对象形式创建表图
- a=plt.subplot(row,col,loc) 创建曲线图
- a.plot(x,y) 绘制曲线图
ax1 = plt.subplot(2,2,1)
ax1.plot(x,y)
ax2 = plt.subplot(222)
ax2.plot(x+1,y-2)
ax3 = plt.subplot(223)
ax3.plot(x+3,y-1)
ax4 = plt.subplot(224)
ax4.plot(x**2,y-2)
[<matplotlib.lines.Line2D at 0x2f5e6462208>]

坐标轴界限
axis方法:设置x,y轴刻度值的范围
- plt.axis([xmin,xmax,ymin,ymax])
plt.plot(x,y)
plt.axis([-6,6,-2,2])
[-6, 6, -2, 2]

plt.axis('off')
- 关闭坐标轴
plt.plot(x,y)
plt.axis('off')
(-3.4557519189487724,
3.4557519189487724,
-1.0832885283134288,
1.083288528313429)

设置画布比例:plt.figure(figsize=(a,b)) a:x刻度比例 b:y刻度比例 (2:1)表示x刻度显示为y刻度显示的2倍
plt.figure(figsize=(16,8))
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x2f5e63b6400>]

坐标轴标签
s 标签内容
color 标签颜色
fontsize 字体大小
rotation 旋转角度
plt的xlabel方法和ylabel方法 title方法
plt.plot(x,y)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Title')
Text(0.5,1,'Title')

图例
legend方法
两种传参方法:
- 分别在plot函数中增加label参数,再调用plt.legend()方法显示
- 直接在legend方法中传入字符串列表

plt.plot(x,y,label='xian_1')
plt.plot(x-1,y+3,label='xian_2')
plt.legend()
<matplotlib.legend.Legend at 0x2f5e66057b8>

legend的参数
- loc参数
- loc参数用于设置图例标签的位置,一般在legend函数内
- matplotlib已经预定义好几种数字表示的位置
plt.plot(x,y,label='xian_1')
plt.plot(x-1,y+3,label='xian_2')
plt.legend(loc=3)
<matplotlib.legend.Legend at 0x2f5e68f6c88>

| 字符串 | 数值 | 字符串 | 数值 |
|---|---|---|---|
| best | 0 | center left | 6 |
| upper right | 1 | center right | 7 |
| upper left | 2 | lower center | 8 |
| lower left | 3 | upper center | 9 |
| lower right | 4 | center | 10 |
| right | 5 |
- ncol参数: ncol控制图例中有几列,在legend中设置ncol
plt.plot(x,y,label='xian_1')
plt.plot(x-1,y+3,label='xian_2')
plt.legend(loc=3,ncol=2)
<matplotlib.legend.Legend at 0x2f5e6ab4a90>

保存图片
使用figure对象的savefig函数来保存图片
fig = plt.figure()---必须放置在绘图操作之前
figure.savefig的参数选项
- filename
含有文件路径的字符串或Python的文件型对象。图像格式由文件扩展名推断得出,例如,.pdf推断出PDF,.png推断出PNG
(“png”、“pdf”、“svg”、“ps”、“eps”……) - dpi
图像分辨率(每英寸点数),默认为100 - facecolor ,打开保存图片查看
图像的背景色,默认为“w”(白色)
fig = plt.figure()
plt.plot(x,y,label='temp')
plt.plot(x-1,y+3,label='dist')
plt.legend(loc=3,ncol=2)
fig.savefig('./123.png',dpi=300)

设置plot的风格和样式
plot语句中支持除X,Y以外的参数,以字符串形式存在,来控制颜色、线型、点型等要素,语法形式为:
plt.plot(X, Y, 'format', ...)
颜色
参数color或c
plt.plot(x,y,c='red',alpha=0.5,ls='steps',lw=3)
[<matplotlib.lines.Line2D at 0x2f5e6a4c668>]

颜色值的方式
别名
- color='r'
合法的HTML颜色名
- color = 'red'
| 颜色 | 别名 | HTML颜色名 | 颜色 | 别名 | HTML颜色名 |
|---|---|---|---|---|---|
| 蓝色 | b | blue | 绿色 | g | green |
| 红色 | r | red | 黄色 | y | yellow |
| 青色 | c | cyan | 黑色 | k | black |
| 洋红色 | m | magenta | 白色 | w | white |
HTML十六进制字符串
- color = '#eeefff'
归一化到[0, 1]的RGB元组
- color = (0.3, 0.3, 0.4)
透明度
alpha参数
线型
参数linestyle或ls
| 线条风格 | 描述 | 线条风格 | 描述 |
|---|---|---|---|
| '-' | 实线 | ':' | 虚线 |
| '--' | 破折线 | 'steps' | 阶梯线 |
| '-.' | 点划线 | 'None' / ',' | 什么都不画 |
线宽
linewidth或lw参数
点型
- marker 设置点形
- markersize 设置点形大小
| 标记 | 描述 | 标记 | 描述 |
|---|---|---|---|
| 's' | 正方形 | 'p' | 五边形 |
| 'h' | 六边形1 | 'H' | 六边形2 |
| '8' | 八边形 |
| 标记 | 描述 | 标记 | 描述 |
|---|---|---|---|
| '.' | 点 | 'x' | X |
| '*' | 星号 | '+' | 加号 |
| ',' | 像素 |
| 标记 | 描述 | 标记 | 描述 |
|---|---|---|---|
| 'o' | 圆圈 | 'D' | 菱形 |
| 'd' | 小菱形 | '','None',' ',None | 无 |
| 标记 | 描述 | 标记 | 描述 |
|---|---|---|---|
| '1' | 一角朝下的三脚架 | '3' | 一角朝左的三脚架 |
| '2' | 一角朝上的三脚架 | '4' | 一角朝右的三脚架 |
plt.plot(x,y,marker='s')
[<matplotlib.lines.Line2D at 0x2f5e6b87dd8>]

# 绘制线 plt.plot(x1,y1,x2,y2)
# 网格线 plt.grid(True) axes.grid(color,ls,lw,alpha)
# 获取坐标系 plt.subplot(n1,n2,n3)
# 坐标轴标签 plt.xlabel() plt.ylabel()
# 坐标系标题 plt.title()
# 图例 plt.legend([names],ncol=2,loc=1) plt.plot(label='name')
# 线风格 -- -. : None step
# 图片保存 figure.savefig()
# 点的设置 marker markersize markerfacecolor markeredgecolor\width
# 坐标轴刻度 plt.xticks(刻度列表,刻度标签列表) plt.yticks()
# axes.set_xticks(刻度列表) axes.set_xticklabels(刻度标签列表)
二、2D图形
直方图
- 是一个特殊的柱状图,又叫做密度图。
【直方图的参数只有一个x!!!不像条形图需要传入x,y】
plt.hist()的参数
- bins
直方图的柱数,可选项,默认为10 - color
指定直方图的颜色。可以是单一颜色值或颜色的序列。如果指定了多个数据集合,例如DataFrame对象,颜色序列将会设置为相同的顺序。如果未指定,将会使用一个默认的线条颜色 - orientation
通过设置orientation为horizontal创建水平直方图。默认值为vertical
data = [1,2,3,3,4,2,5]
plt.hist(data,bins=10)
(array([1., 0., 2., 0., 0., 2., 0., 1., 0., 1.]),
array([1. , 1.4, 1.8, 2.2, 2.6, 3. , 3.4, 3.8, 4.2, 4.6, 5. ]),
<a list of 10 Patch objects>)

返回值 :
1: 直方图向量,是否归一化由参数normed设定
2: 返回各个bin的区间范围
3: 返回每个bin里面包含的数据,是一个list
条形图:plt.bar()
- 参数:第一个参数是索引。第二个参数是数据值。第三个参数是条形的宽度
-【条形图有两个参数x,y】
- width 纵向设置条形宽度
- height 横向设置条形高度
bar()、barh()
x = [1,2,3,4,5]
y = [2,4,6,8,10]
plt.bar(x,y)
<Container object of 5 artists>

plt.barh(x,y)
<Container object of 5 artists>

饼图
【饼图也只有一个参数x】
pie()
饼图适合展示各部分占总体的比例,条形图适合比较各部分的大小
普通各部分占满饼图
plt.pie([1,3,5])
([<matplotlib.patches.Wedge at 0x2f5e6d46198>,
<matplotlib.patches.Wedge at 0x2f5e6d46668>,
<matplotlib.patches.Wedge at 0x2f5e6d46ba8>],
[Text(1.03366,0.376222,''),
Text(-0.191013,1.08329,''),
Text(-0.191013,-1.08329,'')])

普通未占满饼图:小数/比例
plt.pie([0.2,0.3,0.4])
([<matplotlib.patches.Wedge at 0x2f5e6d8d6d8>,
<matplotlib.patches.Wedge at 0x2f5e6d8dba8>,
<matplotlib.patches.Wedge at 0x2f5e6d95128>],
[Text(0.889919,0.646564,''),
Text(-0.646564,0.889919,''),
Text(-0.339919,-1.04616,'')])

饼图阴影、分裂等属性设置
labels参数设置每一块的标签;
labeldistance参数设置标签距离圆心的距离(比例值)
autopct参数设置比例值小数保留位(%.3f%%);
pctdistance参数设置比例值文字距离圆心的距离
explode参数设置每一块顶点距圆心的长度(比例值,列表);
colors参数设置每一块的颜色(列表);
shadow参数为布尔值,设置是否绘制阴影
startangle参数设置饼图起始角度
arr=[11,22,31,15]
plt.pie(arr,labels=['a','b','c','d'])
([<matplotlib.patches.Wedge at 0x2f5e7da2f28>,
<matplotlib.patches.Wedge at 0x2f5e7daa438>,
<matplotlib.patches.Wedge at 0x2f5e7daa978>,
<matplotlib.patches.Wedge at 0x2f5e7daaeb8>],
[Text(0.996424,0.465981,'a'),
Text(-0.195798,1.08243,'b'),
Text(-0.830021,-0.721848,'c'),
Text(0.910034,-0.61793,'d')])

# labeldistance参数设置标签距离圆心的距离(比例值)
arr=[11,22,31,15]
plt.pie(arr,labels=['a','b','c','d'],labeldistance=0.3)
([<matplotlib.patches.Wedge at 0x2f5e7dedb38>,
<matplotlib.patches.Wedge at 0x2f5e7dedf98>,
<matplotlib.patches.Wedge at 0x2f5e7df7518>,
<matplotlib.patches.Wedge at 0x2f5e7df7a58>],
[Text(0.271752,0.127086,'a'),
Text(-0.0533994,0.295209,'b'),
Text(-0.226369,-0.196868,'c'),
Text(0.248191,-0.168526,'d')])

# autopct参数设置比例值小数保留位(%.3f%%);
arr=[11,22,31,15]
plt.pie(arr,labels=['a','b','c','d'],labeldistance=0.3,autopct='%.5f%%')
([<matplotlib.patches.Wedge at 0x2f5e7e3f668>,
<matplotlib.patches.Wedge at 0x2f5e7e3fd68>,
<matplotlib.patches.Wedge at 0x2f5e7e47518>,
<matplotlib.patches.Wedge at 0x2f5e7e47c88>],
[Text(0.271752,0.127086,'a'),
Text(-0.0533994,0.295209,'b'),
Text(-0.226369,-0.196868,'c'),
Text(0.248191,-0.168526,'d')],
[Text(0.543504,0.254171,'13.92405%'),
Text(-0.106799,0.590419,'27.84810%'),
Text(-0.452739,-0.393735,'39.24051%'),
Text(0.496382,-0.337053,'18.98734%')])

# explode参数设置每一块顶点距圆心的长度(比例值,列表);
arr=[11,22,31,15]
plt.pie(arr,labels=['a','b','c','d'],labeldistance=0.3,shadow=True,explode=[0.2,0.3,0.2,0.4])
([<matplotlib.patches.Wedge at 0x2f5e7e8ca90>,
<matplotlib.patches.Wedge at 0x2f5e7e95240>,
<matplotlib.patches.Wedge at 0x2f5e7e95a58>,
<matplotlib.patches.Wedge at 0x2f5e7e9d2b0>],
[Text(0.45292,0.21181,'a'),
Text(-0.106799,0.590419,'b'),
Text(-0.377282,-0.328113,'c'),
Text(0.579113,-0.393228,'d')])

%m.nf
m 占位
n 小数点后保留几位
f 是以float格式输出
散点图:因变量随自变量而变化的大致趋势
【散点图需要两个参数x,y,但此时x不是表示x轴的刻度,而是每个点的横坐标!】
scatter()
plt.scatter(x,y)
<matplotlib.collections.PathCollection at 0x2f5e7edbe10>

plt.scatter(x,y,marker='d',c="rbgy") 设置不同的散点颜色
x = np.random.random(size=(30,))
y = np.random.random(size=(30,))
plt.scatter(x,y)
<matplotlib.collections.PathCollection at 0x2f5e7f519e8>

Matplotlib基础使用的更多相关文章
- 数据分析与展示——Matplotlib基础绘图函数示例
Matplotlib库入门 Matplotlib基础绘图函数示例 pyplot基础图表函数概述 函数 说明 plt.plot(x,y,fmt, ...) 绘制一个坐标图 plt.boxplot(dat ...
- Matplotlib基础图形之散点图
Matplotlib基础图形之散点图 散点图特点: 1.散点图显示两组数据的值,每个点的坐标位置由变量的值决定 2.由一组不连续的点组成,用于观察两种变量的相关性(正相关,负相关,不相关) 3.例如: ...
- Matplotlib基础知识
Matplotlib基础知识 Matplotlib中的基本图表包括的元素 x轴和y轴 axis水平和垂直的轴线 x轴和y轴刻度 tick刻度标示坐标轴的分隔,包括最小刻度和最大刻度 x轴和y轴刻度标签 ...
- matplotlib基础
Matplotlib 基础 注:本文中的程序都默认引入了numpy库和matplotlib库,并且分别简写为np与plt:如果读者不知道怎么使用numpy库,可以移步到这一博客上进行简单的学习 一.简 ...
- 模块简介与matplotlib基础
模块简介与matplotlib基础 1.基本概念 1.1数据分析 对已知的数据进行分析,提取出一些有价值的信息. 1.2数据挖掘 对大量的数据进行分析与挖掘,得到一些未知的,有价值的信息. 1.3数据 ...
- [笔记]SciPy、Matplotlib基础操作
NumPy.SciPy.Matplotlib,Python下机器学习三大利器.上一篇讲了NumPy基础操作,这节讲讲SciPy和Matplotlib.目前接触到的东西不多,以后再遇到些比较常用的再更新 ...
- 第二周 数据分析之展示 Matplotlib基础绘图函数实例
Pyplot基础图表函数 Pyplot饼图的绘制: Pyplot直方图的绘制: Pyplot极坐标图的绘制: Pyplot散点图的绘制: 单元小结: import numpy as np import ...
- python数据图形化—— matplotlib 基础应用
matplotlib是python中常用的数据图形化工具,用法跟matlab有点相似.调用简单,功能强大.在Windows下可以通过命令行 pip install matplotlib 来进行安装. ...
- python画图matplotlib基础笔记
numpy~~基础计算库,多维数组处理 scipy~~基于numpy,用于数值计算等等,默认调用intel mkl(高度优化的数学库) pandas~~强大的数据框,基于numpy matplotli ...
随机推荐
- [转]使用flask实现mock server
什么是mock server: http://www.testclass.net/interface/mock_server 使用flask 实现 mock server : http://www. ...
- linux权限管理—基本权限
目录 Linux权限管理-基本权限 一.权限的基本概述 二.权限修改命令chmod 三.基础权限设置案例 四.属主属组修改命令chown Linux权限管理-基本权限 一.权限的基本概述 1.什么是权 ...
- more 分页显示文件内容
1.命令功能 more 分页显示文件内容 2.语法格式 more option file 参数说明 参数 参数说明 -num 指定屏幕显示大小为num行 +num 从行号num号开始显示 -s 把连 ...
- 如何判断当前LINUX系统启用了ASLR
内核参数randomize_va_space用于控制系统级ASLR 0 关闭ASLR 1 mmap base.stack.vdso page将随机化.这意味着.so文件将被加载到随机地址.链接时指定了 ...
- tpcc-mysql测试mysql5.6 (xfs文件系统)
操作系统版本:CentOS release 6.5 (Final) 2.6.32-431.el6.x86_64 #1 内存:32G CPU:Intel(R) Xeon(R) CPU E5-2450 ...
- CSS3 Animations
CSS Animations 是CSS的一个模块,它定义了如何用关键帧来随时间推移对CSS属性的值进行动画处理.关键帧动画的行为可以通过指定它们的持续时间,它们的重复次数以及它们如何重复来控制. an ...
- 前端经典布局:Sticky footer 布局
什么是Sticky footer布局?前端开发中大部分网站,都会把一个页面分为头部区块.内容区块.页脚区块,这也是比较.往往底部都要求能固定在屏幕的底部,而非随着文档流排布.要实现的样式可以概括如下: ...
- 数组与List互转的坑
一.数组转List 非原始类型的数组转List有很多种方式:假设有Integer[] arr = {"a", "b", "c"}; 1.Li ...
- 如何添加筛选器 (Reporting Services)
如果您希望在计算或显示时包含或排除特定值,可向数据集.数据区域或组添加筛选器.在运行时应用筛选器的顺序为:先对数据集,再对数据区域,最后对组,并按照组层次结构自上而下的顺序.在表.矩阵或列表中,对行组 ...
- Microsoft SQL Server 简介
SQL Server 是Microsoft 公司推出的关系型数据库管理系统.具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行M ...