数据分析工具--matplotlib
一、简介
Matplotlib是一个Python 2D绘图库,它以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形。可以以 Pythonic 和面向对象的方式使用。
matplotlib.pyplot是一组命令样式函数,使Matplotlib的工作方式类似于MATLAB。每个pylot函数对图形进行一些更改:例如,创建图形、在图形中创建绘图区域、在绘图区域中绘制一些线、使用标签装饰绘图等。pyplot主要用于交互式绘图和程序化绘图生成的简单情况。
二、线型图的使用
import matplotlib.pyplot as plt
2.1 plt.plot()
2.1.1 调用格式
#单条线:
plot([x], y, [fmt], data=None, **kwargs)
#多条线一起画
plot([x], y, [fmt], [x2], y2, [fmt2], …, **kwargs)
例子:
plt.plot([1,2,3,4])
向plot()命令提供单个列表或数组,则matplotlib假定它是一个y值序列,并自动为你生成x值。
2.1.2 fmt参数
可选参数[fmt] 是一个字符串来定义图的基本属性如:颜色(color),点型(marker),线型(linestyle),默认为蓝色实线。
具体形式 fmt = ‘[color][marker][line]’,如指定fmt为’bo-’ # 蓝色圆点实线
fmt接收的是每个属性的单个字母缩写,例如:plot(x, y, ‘bo-’) # 蓝色圆点实线
若属性用的是全名则不能用fmt参数来组合赋值,应该用关键字参数对单个属性赋值如:
plot(x,y2,color=‘green’, marker=‘o’, linestyle=‘dashed’,linewidth=1,markersize=6)
plot(x,y3,color=’#900302’,marker=’+’,linestyle=’-’)
2.1.3 关键字参数kwargs(Line2D的属性)
参数 | 描述 |
---|---|
color | 线的颜色 |
marker | 点型 |
linestyle or ls | 线型 |
alpha | 线的透明度(0-1的浮点数) |
label | 图例,通过ply.legend()显示 |
linewidth or lw | 线宽 |
markeredgecolor or mec | 点的边缘颜色 |
markeredgewidth or mew | 点的边缘宽度 |
markerfacecolor or mfc | 点的填充颜色 |
markersize or ms | 点的大小 |
color参数的赋值:
1.字符串形式
'b'
|'blue'
蓝
'g'
|'green'
绿
'r'
|'red'
红
'c'
|'cyan'
蓝绿
'm'
|'magenta'
洋红
'y'
|'yellow'
黄
'k'
|'black'
黑
'w'
|'white'
白
2.十六进制
如: color=’#900302’
3. 0-1的小数
marker参数的赋值:
'.'
point marker 点标记
','
pixel marker 像素标记
'o'
circle marker 圆圈标记
'v'
triangle_down marker 下三角标记
'^'
triangle_up marker 上三角标记
'<'
triangle_left marker 左三角标记
'>'
triangle_right marker 右三角标记
'1'
tri_down marker
'2'
tri_up marker
'3'
tri_left marker
'4'
tri_right marker
's'
square marker 方块标记
'p'
pentagon marker 五边形标记
'*'
star marker 星花*标记
'h'
hexagon1 marker 六边形标记
'H'
hexagon2 marker 六边形标记
'+'
plus marker 加好标记
'x'
x marker x标记
'D'
diamond marker 方菱形标记
'd'
thin_diamond marker 瘦菱形标记
'|'
vline marker 竖线标记
'_'
hline marker 下划线标记
linestyle参数的赋值:
'-'
solid line style 实线
'--'
dashed line style 虚线
'-.'
dash-dot line style 点画线
':'
dotted line style 点线
图例的显示位置:
格式: plt.legend(loc=‘best’)
字符串 | 数值 |
---|---|
best | 0 |
upper right | 1 |
upper left | 2 |
lower left | 3 |
lower right | 4 |
right | 5 |
center left | 6 |
center right | 7 |
lower center | 8 |
upper center | 9 |
center | 10 |
2.2 plt.figure() 画板对象
格式:
fig = plt.figure(
num=None,
figsize=None, 画板大小,一般为元组类型
dpi=None,
facecolor=None, 画板颜色
edgecolor=None, 图形补丁边缘颜色。
frameon=True,
FigureClass=<class ‘matplotlib.figure.Figure’>,
clear=False,
**kwargs,
)
保存figure的图像:fig.savefig(‘xxx.png’)
2.3 plt.title() or axes.set_title()
为坐标系设置标题
参数:
- fontsize设置字体大小,默认12,可选参数 [‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’,‘x-large’, ‘xx-large’]
- fontweight设置字体粗细,可选参数 [‘light’, ‘normal’, ‘medium’, ‘semibold’, ‘bold’, ‘heavy’, ‘black’]
- fontstyle设置字体类型,可选参数[ ‘normal’ | ‘italic’ | ‘oblique’ ],italic斜体,oblique倾斜
- verticalalignment设置水平对齐方式 ,可选参数 : ‘center’ , ‘top’ , ‘bottom’ , ‘baseline’
- horizontalalignment设置垂直对齐方式,可选参数:left,right,center
- rotation(旋转角度)可选参数为:vertical,horizontal 也可以为数字
- alpha透明度,参数值0至1之间
- backgroundcolor标题背景颜色
- bbox给标题增加外框 ,常用参数如下:
boxstyle方框外形
facecolor(简写fc)背景颜色
edgecolor(简写ec)边框线条颜色
edgewidth边框线条大小
2.4 创建多个子坐标系 plt.subplot(nrows, ncols, index, **kwargs) or fig.add_subplot()
2.5 坐标轴的设置
1.坐标轴的范围设置
plt.axis([xmin,xmax,ymin,ymax])
plt.xlim()
plt.ylim()
ax.set_xlim()
ax.set_ylim()
2.添加坐标轴标签
plt.xlabel(xlabel,color,rotation,fondsize)
plt.ylabel()
ax.set_xlabel()
ax.set_ylabel()
3. 坐标轴刻度
ax.set_xticks([…])
ax.set_yticks([…])
plt.xticks(ticks=[],labels)
4.其他
plt.axis(‘equal’)坐标轴的比例不变调整图形
plt.axis(‘off’)
plt.axis(‘scaled’) 坐标轴比例是一样的
三、全局设置
import matplotlib as mpl
格式:
mpl.rcParams['key']=新值
恢复全局默认设置: mpl.rcdefaults()
风格设置: mpl.style.use(‘key’)
查看所有风格: mpl.style.available
字体设置:
1.使用系统自带的字体
mpl.rcParams[‘font.sans-serif’]=[‘SimHei’]
2.使用自定义字体
from matplotlib import font_manager
font_obj=mpl.font_manager.FontProperties(fname=r’C:\Users\Administrator\Desktop\辣鸡心心体.ttf’)
plt.plot(data,data**2)
plt.title(‘我日尼玛’,fontproperties=font_obj)
四、2D图形的绘制
4.1 线形图:plt.plot()
4.2 直方图
直方图使用一系列不等高的长条来表示数据,长条的宽度表示数据的间隔范围,长条的高度表示该范围内数据的频数。
直方图是一种统计报告图
格式:plt.hist()
参数介绍:
参数名 | 描述 |
---|---|
x | 一个数组或者数组序列(不要求每个数组长度相同),用来存放数据 |
bins | 整数、序列、字符串。如果为整数表示等宽区间的个数,自动计算区间范围;为序列,表示区间范围,除了最后一个,其他都含左不含右;字符川表示对应的策略 |
range | 元组,指定最大值和最小值 ,默认为数据中的;如果bins为序列,它则没什么影响 |
density | 布尔类型,是否返回归一化概率密度,所有区间概率和为1 |
weighr | 形状和x相同,表示每个值对应的权重,默认每个值的权重相同 |
cumulative | |
histtype | 直方图类型,‘bar’多个并列摆放;barstacked多个堆叠摆放;step生成对应折线;stepfilled填充相关区域 |
orientation | 直方图方向 |
hist以元组的形式返回直方图的计算结果,包括各区间元素数量、区间的取值范围、以及具体每个区间的对象
4.3 条形图
条形图x轴表示类别
格式:plt.bar() 或者plt.barh()
参数:
参数名 | 描述 |
---|---|
x | x轴的位置序列,即条形的起始位置 |
height | y轴的数值序列,即条形图的高度,需展示的数据 |
width | 条形宽度,默认0.8 |
bottom | y轴坐标的基线,默认为0 |
align | 对齐方式,center、edge |
color | 条形图填充颜色 |
edgecolor | 条形图边缘颜色 |
xerr、yerr | 误差条 |
在一个图上显示多种条形图,可以调整位置和宽度,让他们并列摆放,也可以堆叠摆放
4.4 饼图
显示一个数据系列里各项大小以及各项所占的比例
格式:
plt.pie(x,explode=None, 指定区域分离的距离,通常是一个数组,默认为0labels=None, 为每个区域添加标注,标签列表colors=None, 为每个区域添加颜色,为列表autopct=None,pctdistance=0.6,shadow=False, 是否右阴影效果labeldistance=1.1, 标签离图中心点的距离startangle=0,radius=1, 饼的半径counterclock=True,wedgeprops=None,textprops=None,center=(0, 0),frame=False,rotatelabels=False,*,normalize=None,data=None,
)
4.5 玫瑰图
示例:
data = [805, 598, 831, 586, 357, 562, 692, 623, 575, 605, 623, 585, 573,323, 805, 873, 773, 500, 396, 744, 892, 795, 598, 494, 469, 373]
theta = np.linspace(0, 2*np.pi, len(data))
fig = plt.figure(figsize=(12,8),facecolor='lightgreen')
# 绘制极坐标
ax = plt.axes(polar=True)
ax.set_theta_direction(-1)
ax.set_theta_zero_location('N')ax.bar(x = theta,height=data,width=0.3,color=np.random.random((len(data),3)))
ax.set_axis_off() # 关闭坐标系# 添加text()
for angle,data in zip(theta,data):ax.text(angle+0.04,data+100,str(data))
4.6 散点图
格式:
plt.scatter(x,y,s=None, 点的大小c=None, 点的颜色marker=None, 点型cmap=None, 颜色主题norm=None,vmin=None,vmax=None,alpha=None,linewidths=None,verts=<deprecated parameter>,edgecolors=None,*,plotnonfinite=False,data=None,**kwargs,)
4.7 箱线图
箱线图(别名:盒子图),利用数据中的五个统计量:最小值、第一四分位数、中位数、第三四分位数与最大值来描述数据的一种方法。它可以直观明了地识别数据批中的异常值,利用箱线图判断数据批的偏态和尾重,也可以粗略地看出数据是否具有有对称性,分布的分散程度等信息,特别可以用于对几个样本的比较。
格式:plt.boxplot(
x, 输入的数据
notch=None,
sym=None,
vert=None,
whis=None,
positions=None,
widths=None,
patch_artist=None,
bootstrap=None,
usermedians=None,
conf_intervals=None,
meanline=None,
showmeans=None,
showcaps=None,
showbox=None,
showfliers=None,
boxprops=None,
labels=None,
flierprops=None,
medianprops=None,
meanprops=None,
capprops=None,
whiskerprops=None,
manage_ticks=True,
autorange=False,
zorder=None,
*,
data=None,
)
五、图像
数据分析工具--matplotlib相关推荐
- python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))
Python介绍. Unix & Linux & Window & Mac 平台安装更新 Python3 及VSCode下Python环境配置配置 python基础知识及数据分 ...
- 【Pandas】数据分析工具Pandas的基本操作和可视化工具Matplotlib
1.Pandas简介 pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的 ...
- Python中的数据可视化工具与方法——常用的数据分析包numpy、pandas、statistics的理解实现和可视化工具matplotlib的使用
Python中的数据可视化工具与方法 本文主要总结了: 1.本人在初学python时对常用的数据分析包numpy.pandas.statistics的学习理解以及简单的实例实现 2.可视化工具matp ...
- Python中常用的数据分析工具(模块)有哪些?
本期Python培训分享:Python中常用的数据分析工具(模块)有哪些?Python本身的数据分析功能并不强,需要安装一些第三方的扩展库来增强它的能力.我们课程用到的库包括NumPy.Pandas. ...
- python医学应用_数据分析工具鄙视链:Python、R语言是老大,Excel只能称小弟?
最新行业报告 2020数据分析.商业分析行业报告工作岗位与职能.薪资对比.热招公司等多方面详细解读帮助你一网打尽,斩获心仪Offer! 扫码回复[数据分析 0]立即领取 History语言发展史ABC ...
- python numpy和pandas数据处理_python中添加数据分析工具numpy和pandas
python中添加数据分析工具numpy和pandas 最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网 ...
- python解题软件哪个好用_几个好用的Python数据分析工具
原标题:几个好用的Python数据分析工具 常用的Python数据分析工具汇总! Python是数据处理常用工具,可以处理数量级从几K至几T不等的数据,具有较高的开发效率和可维护性,还具有较强的通用 ...
- 大数据分析工具鄙视链:Python成老大,Excel小弟都称不上?
佛说,一切众生相皆是无相.数据分析做到极致,也可以"无相无生". 在说今天的话题之前,我想先抛出一个结论: "做数据分析,不要建立一种以掌握的软件来给自己分级的心态,但是 ...
- 数据分析工具测评!被Excel打过的“耳光”,现在可以还回去了
每个职场人都听过领导这么说:你帮我分析一下这个数据,你研究一下做个数据报告给我.... 于是你埋头苦干,用着那不太熟练的Excel,也算是依葫芦画瓢,给了一个像样的模板,但实际上这真的是你自己想要的? ...
最新文章
- 《Python基础教程第二版》第五章-条件、循环和其他语句(一)
- 《Python从小白到大牛》第6章 数据类型
- Java为什么print显示不完全,read-eval-print-loop – 在Java 9上,为什么System.getenv()的输出在jshell中不完整?...
- C语言经典例80-猴子分桃
- 读CSS DIV网页样式与布局心得体会
- 来自 Facebook 内部的 Python 学习知识图谱,太全了!
- 模糊神经网络_神经网络模型:当网络开始产生类似于人类思维的过程
- HDU 5890 Eighty seven(DP+bitset优化)
- python mysql 时间比较大小_python时间函数与mysql时间函数转换
- 谁敢动英伟达的奶酪?AI芯片领域,这12家创业公司值得关注
- html5 职工入职后台管理系统_后台管理平台
- Android Studio 使用魅族手机调试时,不显示 Log 的解决方法
- H桥原理、驱动及应用
- oracle的join 优化,oracle索引优化之join部分
- 突发!华为确认53岁高管丁耘骤逝!执掌最大营收业务,东南大学毕业,在职已超26年...
- 解决Ubuntu与Windows不能复制粘贴问题
- 适用于高速公路的查询软件,数据稳定、免维护,可查询高速路况、路线规划、未来天气等信息
- 题目-火影-鸣人-查克拉分配给分身(详解)
- Ubuntu18修改系统语言为英文
- 工业互联网新发展:基于 HTML5 WebGL 的高炉炼铁厂可视化系统
热门文章
- Ready! Use 192.168.191.2 to access clientGuru Meditation Error: Core 1 panic‘ed (LoadProhibited).
- 访问控制/越权漏洞 -- 学习笔记
- pytorch计算余弦相似度
- 好的android 相关的技术博客
- xp系统共享文件,其他电脑访问提示“您没有权限访问,请与网络管理员联系请求访问权限”解决办法。
- 【数理几何】椭圆周长
- 怎么看windows系统是32位还是64位?
- Qt之pro、pri、prf、prl文件简解
- 学习笔记——XSLT转换器的使用(Xalan和Saxon)
- ae和php哪个容易学,PS、AI、AE、PR哪个简单可以先学?