第五节 matplotlib库
一、Matplotlib基础知识
1.1Matplotlib中的基本图表包括的元素
- x轴和y轴 axis
水平和垂直的轴线
- x轴和y轴刻度 tick
刻度标示坐标轴的分隔,包括最小刻度和最大刻度
- x轴和y轴刻度标签 tick label
表示特定坐标轴的值
- 绘图区域(坐标系) axes
实际绘图的区域
- 坐标系标题 title
实际绘图的区域
- 轴标签 xlabel ylabel
实际绘图的区域
1.2 导包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas import Series,DataFrame
1.3 绘制简单图形
- 单条曲线
x=[1,2,3,4,5]
y=[2,4,6,8,10]
plt.plot(x,y)
- 抛物线
x = np.arange(-np.pi,np.pi,0.2)
y = x**2
plt.plot(x,y)
- 绘制正弦曲线图
x = np.arange(-np.pi,np.pi,0.2) y = np.cos(x)
plt.plot(x,y)
1.4 绘制多个曲线的图
x = np.arange(-np.pi,np.pi,0.2)
y = np.cos(x) #方式一
plt.plot(x,y)
plt.plot(x+3,y+3)
#方式二
plt.plot(x,y,x+3,y+3)
1.5 将多个曲线图绘制在一个table区域中:对象形式创建表图
- a=plt.subplot(row,col,loc) 创建曲线图
- a.plot(x,y) 绘制曲线图
ax1=plt.subplot(2,2,1)
ax1.plot(x,y,'r')
ax2=plt.subplot(2,2,2)
ax2.plot(x,y,'b')
ax3=plt.subplot(2,1,2)
ax3.plot(x,y,'black')
ax1=plt.subplot(2,2,1)
ax1.plot(x,y,'r')
ax2=plt.subplot(2,2,3)
ax2.plot(x,y,'b')
ax3=plt.subplot(1,2,2)
ax3.plot(x,y,'black')
1.6 网格线 plt.gride(XXX)
参数:
- axis
- color:支持十六进制颜色
- linestyle: -- -. :
- alpha:透明度0-1
一般网格的添加
plt.grid(axis='both') #x-y都加网格
plt.plot(x,y)
- 使用对象形式设置网格
#ax1,ax2,ax3都是对象
plt.grid(axis='both')
ax1=plt.subplot(2,2,1)
ax1.grid()
ax1.plot(x,y,'r')
ax2=plt.subplot(2,2,2)
ax2.plot(x,y,'b')
ax2.grid()
ax3=plt.subplot(2,1,2)
ax3.grid()
ax3.plot(x,y,'black')
1.7 坐标轴界限
axis方法:设置x,y轴刻度值的范围
plt.axis([xmin,xmax,ymin,ymax])
plt.axis([-6,6,-2,2])
plt.plot(x,y)
#plt.axis('off') 关闭坐标系显示
1.8 关闭坐标轴显示
plt.axis('off')
1.9 设置画布比例
设置画布比例:plt.figure(figsize=(a,b)) a:x刻度比例 b:y刻度比例 (2:1)表示x刻度显示为y刻度显示的2倍
plt.figure(figsize=(2,3))
plt.plot(x,y)
1.10 坐标轴标签
- s 标签内容
- color 标签颜色
- fontsize 字体大小
- rotation 旋转角度
(1) plt的xlabel方法和ylabel方法 title方法
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.title('y= sin(x)')
plt.plot(x,y)
1.11 图例---legend方法
(1)两种传参方法:
- 分别在plot函数中增加label参数,再调用plt.legend()方法显示
- 直接在legend方法中传入字符串列表
#方式一
plt.plot(x,y,label='aaa')
plt.plot(x+3,y+3,label='bbb')
plt.legend() #方式二
plt.plot(x,y,x+3,y+3)
plt.legend(['aaa','bbb'])
(2)legend参数
- loc参数
- loc参数用于设置图例标签的位置,一般在legend函数内
- matplotlib已经预定义好几种数字表示的位置
- ncol参数
- ncol控制图例中有几列,在legend中设置ncol
plt.plot(x,y,x+3,y+3)
plt.legend(['aaa','bbb'],loc=3,ncol=2)
1.12 保存图片
使用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,x+3,y+3)
plt.legend(['aaa','bbb'],loc=3,ncol=2) fig.savefig('./img.png',dpi=500) #dip表示像素分辨率
1.13 设置plot的风格样式
plot语句中支持除X,Y以外的参数,以字符串形式存在,来控制颜色、线型、点型等要素,语法形式为:
plt.plot(X, Y, 'format', ...)
- 颜色 --参数color或c
- 透明度 -- alpha参数(0-1)
线型 -- 参数linestyle或ls
- 线宽 -- linewidth或lw参数
- 点型
- marker 设置点形
- markersize 设置点形大小
plt.plot(x,y,c='y',alpha=0.8,lw=3,marker='',markersize=10,markerfacecolor='b')
plt.grid(color='r')
总结: 绘制线 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图形
2.1 直方图
- 是一个特殊的柱状图,又叫做密度图。
【直方图的参数只有一个x!!!不像条形图需要传入x,y】
- plt.hist()的参数
- bins
直方图的柱数,可选项,默认为10 - color
指定直方图的颜色。可以是单一颜色值或颜色的序列。如果指定了多个数据集合,例如DataFrame对象,颜色序列将会设置为相同的顺序。如果未指定,将会使用一个默认的线条颜色 - orientation
通过设置orientation为horizontal创建水平直方图。默认值为vertical
- bins
data = [1,2,3,3,4,2,5]
plt.hist(data,bins=10)
图像中返回值 :
1: 直方图向量,是否归一化由参数normed设定
2: 返回各个bin的区间范围
3: 返回每个bin里面包含的数据,是一个list
2.2条形图:plt.bar()
- 参数:第一个参数是索引。第二个参数是数据值。第三个参数是条形的宽度
-【条形图有两个参数x,y】
- width 纵向设置条形宽度
- height 横向设置条形高度
bar() : 垂直的条形图
barh():水平条形图
x=[1,2,3,4,5]
y=[3,5,4,2,1]
plt.bar(x,y,width=0.6,color='r')
plt.barh(x,y) #水平条形图
2.3 饼图
【饼图也只有一个参数x】
pie()
饼图适合展示各部分占总体的比例,条形图适合比较各部分的大小.
- 普通各部分占满饼图
plt.pie([11,22,33])
- 普通未占满饼图:小数/比例
plt.pie([0.2,0.3,0.1])
- 饼图参数属性设置
labels参数设置每一块的标签;
labeldistance参数设置标签距离圆心的距离(比例值)
autopct参数设置比例值小数保留位(%.3f%%);
pctdistance参数设置比例值文字距离圆心的距离
explode参数设置每一块顶点距圆心的长度(比例值,列表);
colors参数设置每一块的颜色(列表);
shadow参数为布尔值,设置是否绘制阴影
startangle参数设置饼图起始角度
##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])
2.4 散点图 : 因变量随自变量而变化的大致趋势
【散点图需要两个参数x,y,但此时x不是表示x轴的刻度,而是每个点的横坐标!】
scatter()
#plt.scatter(x,y,marker='d',c="rbgy") 设置不同的散点颜色
x = np.random.random(size=(100,))
y = np.random.random(size=(100,))
plt.scatter(x,y,c='rgby')
第五节 matplotlib库的更多相关文章
- 数据分析与展示——Matplotlib库入门
Matplotlib库入门 Matplotlib库介绍 Matliotlib库是Python优秀的数据可视化第三方库. Matliotlib库的效果见:http://matplotlib.org/ga ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- android内部培训视频_第五节(1)_OA实战之登录界面
第五节(1):OA实战之登录界面 一.登录界面布局 1.背景图片 2.文本框 3.checkbox 4.按钮 暂未实现点击切换图片效果 <RelativeLayout xmlns:androi ...
- 基于Extjs的web表单设计器 第五节——数据库设计
这里列出表单设计器系列的内容,6.7.8节的内容应该在春节后才有时间出了.因为这周末就请假回老家了,准备我的结婚大事.在此提前祝大家春节快乐! 基于Extjs的web表单设计器 基于Extjs的web ...
- 在Ubuntu 14.04 64bit上安装numpy和matplotlib库
原文:http://blog.csdn.net/tao_627/article/details/44004541 按照这个成功安装! 机器学习是数据挖掘的一种实现形式,在学习<机器学习实战> ...
- (五)boost库之随机数random
(五)boost库之随机数random boost库为我们提供了许多的日常随机数生成器: 1.uniform_smallint:在小整数域内的均匀分布 2.uniform_int:在整数域上的均匀分布 ...
- JAVA GC之标记 第五节
JAVA GC之标记 第五节 OK,我们继续昨天最后留下的问题,什么是标记?怎么标记? 第一个问题相信大家都知道,标记就是对一些已死的对象打上记号,方便垃圾收集器的清理. 至于怎么标记,一般有两种方 ...
- 第五节 面向连接传输:TCP
第五节 面向连接传输:TCP TCP概述RFCs:793,1122,1323,2018,2581 点对点: 一个发送方,一个接收方 可靠,按序的字节流: 无“报文边界”,无结构但有 ...
- VUE2.0实现购物车和地址选配功能学习第五节
第五节 单件商品金额计算和单选全选功能 1.vue精髓在于操作data模型来改变dom,渲染页面,而不是直接去改变dom 2.加减改变总金额功能: html:<div class="c ...
随机推荐
- Spring Security OAuth 2.0
续·前一篇<OAuth 2.0> OAuth 2.0 Provider 实现 在OAuth 2.0中,provider角色事实上是把授权服务和资源服务分开,有时候它们也可能在同一个应用中, ...
- ASP.NET Core SignalR中的流式传输
什么是流式传输? 流式传输是这一种以稳定持续流的形式传输数据的技术. 流式传输的使用场景 有些场景中,服务器返回的数据量较大,等待时间较长,客户端不得不等待服务器返回所有数据后,再进行相应的操作.这时 ...
- .NET Core中的路由约束
背景介绍 上周给大家分享了Nancy in .NET Core学习笔记 - 路由之后, 就一直在考虑.NET Core能否实现和Nancy中一样的路由约束, 最近查阅了一下MSDN及一些国外博客, 发 ...
- JVM(2)--一文读懂垃圾回收
与其他语言相比,例如c/c++,我们都知道,java虚拟机对于程序中产生的垃圾,虚拟机是会自动帮我们进行清除管理的,而像c/c++这些语言平台则需要程序员自己手动对内存进行释放.虽然这种自动帮我们回收 ...
- 2.计算机组成-数字逻辑电路 门电路与半加器 异或运算半加器 全加器组成 全加器结构 反馈电路 振荡器 存储 D T 触发器 循环移位 计数器 寄存器 传输门电路 译码器 晶体管 sram rom 微处理 计算机
现代计算机的各个部件到底是如何通过逻辑电路构成的呢 半加器 我们说过了门电路 看似简单的三种门电路却是组成了整个逻辑电路的根基 真值表--其实就是根据输入输出状态枚举罗列出来的所有可能 比如有一台 ...
- sed从入门到深入的使用心得
本人已经此系列的sed文章整理到pdf中,欢迎下载:玩透sed:探究sed原理 sed系列文章: sed修炼系列(一):花拳绣腿之入门篇sed修炼系列(二):武功心法(info sed翻译+注解)se ...
- MySQL 笔记整理(8.b) --事务到底是隔离还是不隔离的?
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 8.a) --事务到底是隔离还是不隔离的? 本周工作较忙,加上懒惰,拖更 ...
- 用EF的三种方式(SqlServer数据库和Oracle数据库)
SqlServer数据库 1.DB First 现有DB,生成edmx文件 贴一下生成的model //------------------------------------------------ ...
- 【Parallel】.Net 并行执行程序的使用心得
一.摘要 官方介绍:提供对并行循环和区域的支持. 命名空间:using System.Threading.Tasks 三个静态方法:Parallel.Invoke,Parallel.For,Paral ...
- Array的 filter() 和 sort()
filter() filter() 方法创建一个创建一个新数组,新数组中的元素是通过筛选原数组中的元素所得到的.筛选的方式是把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保 ...