matplotlib各图形绘制
2D图形
- import numpy as np
- import pandas as pd
- from pandas import Series,DataFrame
- import matplotlib.pyplot as plt
散点图
【散点图需要两个参数x,y,但此时x不是表示x轴的刻度,而是每个点的横坐标!】
scatter()
通过散点图 可以研究 两个特征之间的关系
- x = np.random.normal(loc=0,scale=5,size=1000)
- y = np.random.normal(loc=0,scale=5,size=1000)
- # plt.plot() # plot绘制的是折线图
- plt.scatter(x,y) # plt.scatter()绘制的是散点图
- plt.scatter(x,y,s=80,c='red') # s size指的是散点的大小 c color指的是散点的颜色
- size = np.random.randint(0,100,1000)
- color = np.random.random(size=(1000,3))
- # 给这1000个点 随机产生 不同的 大小和颜色
- plt.scatter(x,y,s=size,c=color,alpha=0.6,marker='*')
- plt.axis('off')
饼图
【饼图也只有一个参数x!】
pie() 饼图适合展示各部分占总体的比例,条形图适合比较各部分的大小
普通各部分占满饼图
- data = np.array([30,50,24,80]) # 如果各个值 加起来 比1大 就会计算各个部分的百分比
- plt.pie(data)
- plt.axis('equal')
普通未占满饼图
- data = np.array([0.2,0.4,0.2,0.1]) # 如果比1 小 直接把各个部分的值 作为 百分比
- plt.pie(data)
饼图阴影、分裂等属性设置
- labels参数设置每一块的标签;
- labeldistance参数设置标签距离圆心的距离(比例值,只能设置一个浮点小数)
- autopct参数设置比例值的显示格式(%.nf%%);
- pctdistance参数设置比例值文字距离圆心的距离
- explode参数设置每一块顶点距圆形的长度(比例值,列表);
- colors参数设置每一块的颜色(列表);
- shadow参数为布尔值,设置是否绘制阴影
- startangle参数设置饼图起始角度
- data = np.array([30,50,24,80])
- _ = plt.pie(data
- ,labels=['china','india','brazil','russa'] # 各个部分的名字(标签)
- ,labeldistance=1.1 # 标签到中心点的距离
- ,autopct='%.1f%%' # 控制比例的值的显示
- ,pctdistance=0.5 # 控制百分比的值的显示位置
- ,explode=[0.1,0,0,0] # 每一份扇形 到中心点的距离
- ,colors = ['red','green','blue','yellow']
- ,shadow=True
- ,startangle=90 # 绘制图形时候 开始的角度
- )
直方图
【直方图的参数只有一个x!!!不像条形图需要传入x,y】
hist()的参数
- bins
- 可以是一个bin数量的整数值,也可以是表示bin的一个序列。默认值为10
- density (normed)
- 如果值为True,直方图的值将进行归一化处理,形成概率密度,默认值为False
- color
- 指定直方图颜色。可以是单一色值或颜色序列。如果指定了多个数据集合,颜色序列将会设置为相同的顺序。如果未指定,将会使用一个默认的线条颜色
- orientation
- 通过设置orientation为horizontal创建水平直方图。默认值为vertical
- data = np.random.randint(0,100,size=100)
- df = DataFrame(data)
- df.plot(kind='hist')
- # bins指的是要把整个范围 分成多少份 默认值是10
- # density把值从频率变成概率
- # orientation用来控制条形图的方向 horizontal表示水平
- plt.hist(data,bins=5,density=True,color='r',orientation='horizontal')
条形图
【条形图有两个参数x,y】
- width 水平方向的长度
- height 竖直方向的长度
bar()、barh()
- data = np.array([1,4,7,2,8,5])
- index = [1,2,3,4,5,6]
- # x是索引, height是高度(值)
- plt.bar(x=index,height=data,width=0.5)
- # y是各个样本的索引
- # 各个样本的值的大小 用width来体现
- plt.barh(y=index,height=0.5,width=data)
- data = np.array([1,2,3,4,5,6])
- index = [1,2,3,4,5,6]
- plt.bar(x=index,height=data,width=0.5)
- plt.axes(polar=True)
- data = np.array([1,2,3,4,5,6])
- index = [1,2,3,4,5,7]
- plt.bar(x=index,height=data,width=0.5)
- index = np.arange(0,2*np.pi,np.pi/4)
- data = [1,2,3,4,5,6,7,8]
- plt.axes(polar=True)
- plt.bar(x=index,height=data,width=0.5)
图形内的文字、注释、箭头
控制文字属性的方法:
所有的方法会返回一个matplotlib.text.Text对象
图形内的文字
text()
- # 以下所有这些 都是文字对象 都可以设置 color rotation fontsize fontproperties ...
- axes = plt.subplot()
- plt.title('title') # 画布标题 实际上 内部调用的 就是axes坐标系的标题
- # plt.suptitle('suptitle',color='r',rotation=90,fontsize=10)
- plt.figtext(0.2,0.8,'fig_text') # 画布内的文本 x和y参数用来指定位置(0-1之间 不过也可以超出这个范围) s就是文字的内容
- axes.set_title('axes_title')
- axes.text(0.5,0.5,'axes_text') # x, y, s
- axes.text(0.8,0.2,'axes_text')
注释
annotate()
- xy参数设置箭头指示的位置
- xytext参数设置注释文字的位置
- arrowprops参数以字典的形式设置箭头的样式
- width参数设置箭头长方形部分的宽度
- headlength参数设置箭头尖端的长度,
- headwidth参数设置箭头尖端底部的宽度
- shrink参数设置箭头顶点、尾部与指示点、注释文字的距离(比例值),可以理解为控制箭头的长度
- data = np.random.randint(0,10,size=10)
- index = np.arange(0,10,1)
- data
- index
- plt.plot(index,data)
- # s 注释的内容
- # xy 注释的位置 以列表或者元组的形式 设置x和y的座标(注意 不是0-1的那种值)
- # plt.annotate('hehe',[5,2])
- # 如果想添加 箭头 可以用 arrowprops来设置箭头的样式
- # plt.annotate(s='hehe',xy=[5,2],xytext=[0,8],arrowprops={'width':2}) # xytext用来设置文本的位置 xy是箭头指向的位置
- # plt.annotate(s='hehe',xy=[5,2],xytext=[0,8],arrowprops={'width':2},color='r',rotation=90) # annotation注释 也是文本对象 也可以设置文本属性
- plt.annotate(s='hehe',xy=[5,2],xytext=[0,8],arrowprops={'width':20,'headlength':25,'headwidth':25}) # 设置箭头的样式 箭头身体的宽度width 箭头头部的宽度headwidth 长度headlength
- plt.plot(index,data)
- plt.annotate(s='hehe',xy=[5,2],xytext=[0,8],arrowprops={'arrowstyle':'fancy'})
3D图
曲面图
导包
- from mpl_toolkits.mplot3d.axes3d import Axes3D
使用mershgrid函数切割x,y轴
- X,Y = np.meshgrid(x, y)
创建3d坐标系
- axes = plt.subplot(projection='3d')
绘制3d图形
- p = axes.plot_surface(X,Y,Z,color='red',cmap='summer') # 返回图形对象
添加colorbar
- plt.colorbar(p,shrink=0.5) # 传入图形对象
- from mpl_toolkits.mplot3d.axes3d import Axes3D
- axes = plt.subplot(projection='3d')
- # 取遍 x y 平面上的整数点
- x = np.linspace(0,5,6) # 取遍了x轴线上的整数点
- x
- y = np.linspace(0,5,6)
- y
- X,Y = np.meshgrid(x,y)
- def fn(x,y):
- return np.sin(y)-np.cos(x)
- Z = fn(X,Y)
- x = np.linspace(-6,6,100)
- y = np.linspace(-6,6,100)
- X,Y = np.meshgrid(x,y)
- # plot_surface绘制平面
- plt.figure(figsize=(12,8))
- axes = plt.subplot(projection='3d')
- # axes.plot_surface(X, Y, Z,color='red')
- p = axes.plot_surface(X, Y, Z,cmap='rainbow')
- plt.colorbar(p,shrink=0.5)
玫瑰图/极坐标条形图
创建极坐标,设置polar属性
plt.axes(polar = True)
绘制极坐标条形图
index = np.arange(0,2*np.pi,2*np.pi/8)
plt.bar(x=index ,height = [1,2,3,4,5,6,7,8] ,width = 2*np.pi/8)
matplotlib各图形绘制的更多相关文章
- 数据分析——Matplotlib图形绘制
创建画布或子图 函数名称 函数作用 plt.figure 创建一个空白画布,可以指定画布大小,像素. figure.add_subplot 创建并选中子图,可以指定子图的行数,列数,与选中图片编号. ...
- Matplotlib 图形绘制
章节 Matplotlib 安装 Matplotlib 入门 Matplotlib 基本概念 Matplotlib 图形绘制 Matplotlib 多个图形 Matplotlib 其他类型图形 Mat ...
- Matplotlib基本图形之条形图2
Matplotlib基本图形之条形图2 1.绘制多条条形图 示例代码: import time import numpy as np import matplotlib.pyplot as plt b ...
- Matplotlib基本图形之条形图
Matplotlib基本图形之条形图 条形图特点: 以长方形的长度为变量的统计图表用来比较多个数据分类的数据大小通常用于较小的数据集分析例如不同季度的销量,不同国家的人口 示例代码: import o ...
- Matplotlib基本图形之折线图
Matplotlib基本图形之折线图折线图特点 折线图是用折线将各数据连起来组成的图形常用来观察数据随时间变化的趋势例如:股票价格,温度变化,等等 示例代码: import os import tim ...
- 十分钟快速学会Matplotlib基本图形操作
在学习Python的各种工具包的时候,看网上的各种教程总是感觉各种方法很多很杂,参数的种类和个数也十分的多,理解起来需要花费不少的时间. 所以我在这里通过几个例子,对方法和每个参数都进行详细的解释,这 ...
- 用matplotlib和pandas绘制股票MACD指标图,并验证化交易策略
我的新书<基于股票大数据分析的Python入门实战>于近日上架,在这篇博文向大家介绍我的新书:<基于股票大数据分析的Python入门实战>里,介绍了这本书的内容.这里将摘录出部 ...
- 【Windows编程】系列第五篇:GDI图形绘制
上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数 ...
- 13个JavaScript图表(JS图表)图形绘制插件【转】
现在网络上又有越来越多的免费的(JS 图表)JavaScript图表图形绘制插件.我之前给一家网站做过复杂的图形,我们用的是 highchart.在那段时间,没有很多可供选择的插件.但现在不同了,很容 ...
随机推荐
- Jmeter学习之-获取登录的oken值(1)
ps: 这里只着重讲述如何实时获取其他接口返回的值,作为此次接口的参数传递,添加接口请求的相关不再详述,可查看上一篇文章 为了方便管理,此处将:登录接口单独放在一个线程组下面,需要使用登录接口返回的t ...
- 如何知道网页浏览器cookie是什么?
一直有网友问网页cookie如何获取,其实想知道自己访问网页时的cookie没那么难,用Chrome内核浏览器的debug功能就能看到,怎么查看呢?随ytkah一起来看看吧! 打开网页,按F12键,选 ...
- javaweb(1)之tomcat使用
安装 1.点击下载. 2.解压到一个目录. 3.进入解压后的 bin 目录,双击该文件夹下的 startup.bat 即可运行. 4.若运行成功,会有一个窗口悬停如下: 访问地址: localhost ...
- 024-母版页MasterPage
网站的布局通常是统一的,上面是Logo.菜单条.下面是公司地址.版权声明等.如果每个页面都重复做这些功能的话:重复性劳动.一旦修改那么每个页面都要修改..Net中一般用母版(MasterPage)技术 ...
- 读取excel日期数据问题
1.企业导入数据,遇到日期数据, excel中显示日期格式正常 2009/3/13, 结果利用npoi读出来的竟然是 13-3月-2009,特别奇葩. so把excel中的日期数据统一成文本.利用Te ...
- JavaScript--浅谈!=、!==、==和===的区别
== 和 != 比较若类型不同,先偿试转换类型,再作值比较,最后返回值比较结果 === 和 !== 只有在相同类型下,才会比较其值 <!DOCTYPE html> <html> ...
- K均值
K-means算法的工作流程 首先,随机确定k个初始点的质心:然后将数据集中的每一个点分配到一个簇中,即为每一个点找到距其最近的质心,并将其分配给该质心所对应的簇:该步完成后,每一个簇的质心更新为该簇 ...
- python fabric的用法
1. Fabric的任务运行规则根据Fabric Execution model的说明,fabric默认以串行方式运行tasks,具体而言: 1)在fabfile及其import文件中定义的task对 ...
- [转载]Javascript .then()这个方法是什么意思?
then()方法是异步执行. 意思是:就是当.then()前的方法执行完后再执行then()内部的程序,这样就避免了,数据没获取到等的问题. 语法:promise.then(onCompleted, ...
- Linux:command not found
最近老是遇到command not found 这个问题,然后就上网查到什么文件底下export什么变量啊.后来次数多了,发现不对劲.后来上网查了一下,原来切换到root用户要使用su -,而不是su ...