• 中文字体设置
# 字体设置
plt.rcParams['font.sans-serif'] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

1、基本使用

Matplotlib:是一个Python的2D绘图库,通过Matplotlib,开发者可以仅需要几行代码,便可以生成折线图,直方图,条形图,饼状图,散点图等。
plot是一个画图的函数,他的参数:plot([x],y,[fmt],data=None,**kwargs)

1.1、线条样式 & 颜色

(1)点线形式

字符 类型 字符 类型
‘-’ 实线 ‘–’ 虚线
‘-.’ 虚点线 ‘:’ 点线
‘.’ ‘,’ 像素点
‘o’ 圆点 ‘v’ 下三角点
‘^’ 上三角点 ‘<’ 左三角点
‘>’ 右三角点 ‘1’ 下三叉点
‘2’ 上三叉点 ‘3’ 左三叉点
‘4’ 右三叉点 ‘s’ 正方点
‘p’ 五角点 ‘*’ 星形点
‘h’ 六边形点1 ‘H’ 六边形点2
‘+’ 加号点 ‘x’ 乘号点
‘D’ 实心菱形点 ‘d’ 瘦菱形点
‘_’ 横线点

(2)线条颜色

字符 颜色
‘b’ 蓝色,blue
‘g’ 绿色,green
‘r’ 红色,red
‘c’ 青色,cyan
‘m’ 品红,magenta
‘y’ 黄色,yellow
‘k’ 黑色,black
‘w’ 白色,white
  • 范例
import matplotlib.pyplot as plt
import numpy as np# 原始线图
plt.plot(range(10),[np.random.randint(0,10) for x in range(10)])# 点线图
plt.plot(range(10),[np.random.randint(0,10) for x in range(10)],"*")# 线条颜色
plt.plot([1,2,3,4,5],[1,2,3,4,5],'r') #将颜色线条设置成红色
  • 运行结果

1.2、轴&标题

1、设置图标题:plt.title
2、设置轴标题:plt.xlabel & plt.ylabel  -  标题名称
3、设置轴刻度:plt.xticks & plt.yticks  -  刻度长度,刻度标题
  • 范例
x = range(10)
y = [np.random.randint(0,10) for x in range(10)]
plt.plot(x,y,linewidth=10,color='red')# 设置图标题
plt.title("sin函数")# 设置轴标题
plt.xlabel("x轴")
plt.ylabel("y轴")# 设置轴刻度
plt.xticks(range(10),["第%d天"%x for x in range(1,10)])
plt.yticks(range(10),["第%d天"%x for x in range(1,10)])# 加载字体plt.rcParams['font.sans-serif'] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
  • 运行结果

1.3、marker设置

marker:关键点重点标记
  • 范例
x = range(10)
y = [np.random.randint(0,10) for x in range(10)]
plt.plot(x,y,linewidth=10,color='red')# 重点标记
plt.plot(x,y,marker="o",markerfacecolor='k',markersize=10)
  • 运行结果

1.4、注释文本

annotate:注释文本
  • 范例
x = range(10)
y = [np.random.randint(0,10) for x in range(10)]
plt.plot(x,y,linewidth=10,color='red')# 重点标记
plt.plot(x,y,marker="o",markerfacecolor='k',markersize=10)# 注释文本设置
plt.annotate('local max', xy=(5, 5), xytext=(10,15),
arrowprops=dict(facecolor='black',shrink=0.05),
)
  • 运行结果

1.5、设置图形样式

plt.figure:调整图片的大小和像素`num`:图的编号,`figsize`:单位是英寸,`dpi`:每英寸的像素点,`facecolor`:图片背景颜色,`edgecolor`:边框颜色,`frameon`:是否绘制画板。
  • 范例
x = range(10)
y = [np.random.randint(0,10) for x in range(10)]
# 设置图形样式
plt.figure(figsize=(20,10),dpi=80)
plt.plot(x,y,linewidth=10,color='red')
  • 运行结果

2、条形图

  • 应用场景
1. 数量统计。
2. 频率统计。
  • 相关参数
barh:条形图
1. `x`:一个数组或者列表,代表需要绘制的条形图的x轴的坐标点。
2. `height`:一个数组或者列表,代表需要绘制的条形图y轴的坐标点。
3. `width`:每一个条形图的宽度,默认是0.8的宽度。
4. `bottom`:`y`轴的基线,默认是0,也就是距离底部为0.
5. `align`:对齐方式,默认是`center`,也就是跟指定的`x`坐标居中对齐,还有为`edge`,靠边对齐,具体靠右边还是靠左边,看`width`的正负。
6. `color`:条形图的颜色。

2.1、横向条形图

  • 范例
movies = {"流浪地球":40.78,"飞驰人生":15.77,"疯狂的外星人":20.83,"新喜剧之王":6.10,"廉政风云":1.10,"神探蒲松龄":1.49,"小猪佩奇过大年":1.22,"熊出没·原始时代":6.71
}
plt.barh(np.arange(len(movies)),list(movies.values()))
plt.yticks(np.arange(len(movies)),list(movies.keys()),fontproperties=font)
plt.grid()
  • 运行结果

2.2、分组条形图

  • 范例
movies = {"流浪地球":[2.01,4.59,7.99,11.83,16],"飞驰人生":[3.19,5.08,6.73,8.10,9.35],"疯狂的外星人":[4.07,6.92,9.30,11.29,13.03],"新喜剧之王":[2.72,3.79,4.45,4.83,5.11],"廉政风云":[0.56,0.74,0.83,0.88,0.92],"神探蒲松龄":[0.66,0.95,1.10,1.17,1.23],"小猪佩奇过大年":[0.58,0.81,0.94,1.01,1.07],"熊出没·原始时代":[1.13,1.96,2.73,3.42,4.05]
}
plt.figure(figsize=(20,8))
width = 0.75
bin_width = width/5
movie_pd = pd.DataFrame(movies)
ind = np.arange(0,len(movies))# 第一种方案
for index in movie_pd.index:day_tickets = movie_pd.iloc[index]xs = ind-(bin_width*(2-index))plt.bar(xs,day_tickets,width=bin_width,label="第%d天"%(index+1))for ticket,x in zip(day_tickets,xs):plt.annotate(ticket,xy=(x,ticket),xytext=(x-0.1,ticket+0.1))# 设置图例
plt.ylabel("单位:亿")
plt.title("春节前5天电影票房记录")
# 设置x轴的坐标
plt.xticks(ind,movie_pd.columns)
plt.xlim
plt.grid(True)
plt.show()
  • 运行结果

2.3、堆叠条形图

  • 范例
menMeans = (20, 35, 30, 35, 27)
womenMeans = (25, 32, 34, 20, 25)
groupNames = ('G1','G2','G3','G4','G5')
xs = np.arange(len(menMeans))
plt.bar(xs,menMeans)
plt.bar(xs,womenMeans,bottom=menMeans)
plt.xticks(xs,groupNames)
plt.show()
  • 运行结果

3、直方图

plt.hist:直方图
1. x:数组或者可以循环的序列;
2. bins:数字或者序列(数组/列表等);
3. range:元组或者None,如果为元组,那么指定`x`划分区间的最大值和最小值;
4. density:默认是`False`,如果等于`True`,那么将会使用频率分布直方图;
5. cumulative:如果这个和`density`都等于`True`,那么返回值的第一个参数会不断的累加,最终等于`1`。
  • 应用场景
1. 显示各组数据数量分布的情况。
2. 用于观察异常或孤立数据。
3. 抽取的样本数量过小,将会产生较大误差,可信度低,也就失去了统计的意义。因此,样本数不应少于50个。

3.1、直方图

  • 范例
durations = [131,  98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115,  99, 136, 126, 134,  95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117,  86,  95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123,  86, 101,  99, 136,123, 117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140,  83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144,  83, 123, 111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137,  92,121, 112, 146,  97, 137, 105,  98, 117, 112,  81,  97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133, 112,  83,  94, 146, 133, 101,131, 116, 111,  84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]
plt.figure(figsize=(15,5))
nums,bins,patches = plt.hist(durations,bins=20,edgecolor='k')
plt.xticks(bins,bins)
for num,bin in zip(nums,bins):plt.annotate(num,xy=(bin,num),xytext=(bin+1.5,num+0.5))
plt.show()
  • 运行结果

3.2、频率直方图

density:频率直方分布图
  • 范例
nums,bins,patches = plt.hist(durations,bins=20,edgecolor='k',density=True,cumulative=True)
plt.xticks(bins,bins)
for num,bin in zip(nums,bins):plt.annotate("%.4f"%num,xy=(bin,num),xytext=(bin+0.2,num+0.0005))
  • 运行结果

3.3、直方图

cumulative参数:nums的总和为1
  • 范例
plt.figure(figsize=(15,5))
nums,bins,patches = plt.hist(durations,bins=20,edgecolor='k',density=True,cumulative=True)
plt.xticks(bins,bins)
for num,bin in zip(nums,bins):plt.annotate("%.4f"%num,xy=(bin,num),xytext=(bin+0.2,num+0.0005))
  • 运行结果

4、散点图

plt.scatter:散点图绘制:1. x,y:分别是x轴和y轴的数据集。两者的数据长度必须一致。2. s:点的尺寸。3. c:点的颜色。4. marker:标记点,默认是圆点,也可以换成其他的。
  • 范例
plt.scatter(x =data_month_sum["sumprice"]     #传入X变量数据,y=data_month_sum["Quantity"]     #传入Y变量数据,marker='*'     #点的形状,s=10           #点的大小,c='r'          #点的颜色)         plt.show()
  • 运行结果

5、饼图

饼图:一个划分为几个扇形的圆形统计图表,用于描述量、频率或百分比之间的相对关系的。

matplotlib中,可以通过plt.pie来实现,其中的参数如下:

  1. x:饼图的比例序列。
  2. labe
  3. ls:饼图上每个分块的名称文字。
  4. explode:设置某几个分块是否要分离饼图。
  5. autopct:设置比例文字的展示方式。比如保留几个小数等。
  6. shadow:是否显示阴影。
  7. textprops:文本的属性(颜色,大小等)。
  • 范例
plt.figure(figsize=(8,8),dpi=100,facecolor='white')plt.pie(x = StockCode.values,                  #数据传入radius=1.5,                            #半径autopct='%.2f%%'                       #百分比显示,pctdistance=0.6,                      #百分比距离圆心比例labels=StockCode.index,                #标签labeldistance=1.1,                     #标签距离圆心比例wedgeprops ={'linewidth':1.5,'edgecolor':'green'}, #边框的线宽和颜色textprops={'fontsize':10,'color':'blue'})  #文本字体大小和颜色
plt.title('商品销量占比',pad=100)              #设置标题及距离坐标轴的位置
plt.show()
  • 运行结果

6、箱线图

箱图的绘制方法是::1、先找出一组数据的上限值、下限值、中位数(Q2)和下四分位数(Q1)以及上四分位数(Q3):2、然后连接两个四分位数画出箱子:3、再将最大值和最小值与箱子相连接,中位数在箱子中间。  中位数:把数据按照从小到大的顺序排序,然后最中间的那个值为中位数,如果数据的个数为偶数,那么就是最中间的两个数的平均数为中位数。
上下四分位数:同样把数据排好序后,把数据等分为4份。出现在`25%`位置的叫做下四分位数,出现在`75%`位置上的数叫做上四分位数。但是四分位数位置的确定方法不是固定的,有几种算法,每种方法得到的结果会有一定差异,但差异不会很大。上下限的计算规则是:
IQR=Q3-Q1
上限=Q3+1.5IQR
下限=Q1-1.5IQR

matplotlib中有plt.boxplot来绘制箱线图,这个方法的相关参数如下:

  1. x:需要绘制的箱线图的数据。
  2. notch:是否展示置信区间,默认是False。如果设置为True,那么就会在盒子上展示一个缺口。
  3. sym:代表异常点的符号表示,默认是小圆点。
  4. vert:是否是垂直的,默认是True,如果设置为False那么将水平方向展示。
  5. whis:上下限的系数,默认是1.5,也就是上限是Q3+1.5IQR,可以改成其他的。也可以为一个序列,如果是序列,那么序列中的两个值分别代表的就是下限和上限的值,而不是再需要通过IQR来计算。
  6. positions:设置每个盒子的位置。
  7. widths:设置每个盒子的宽度。
  8. labels:每个盒子的label
  9. meanlineshowmeans:如果这两个都为True,那么将会绘制平均值的的线条。
  • 范例
#箱线图 - 主要观察数据是否有异常(离群点)
#箱须-75%和25%的分位数+/-1.5倍分位差
plt.figure(figsize=(6.4,4.8),dpi=100)#是否填充箱体颜色,是否展示均值,是否展示异常值,箱体设置,异常值设置,均值设置,中位数设置
plt.boxplot(x=UnitPrice                               #传入数据,patch_artist=True                                #是否填充箱体颜色,showmeans=True                                   #是否展示均值,showfliers=True                                  #是否展示异常值,boxprops={'color':'black','facecolor':'white'}    #箱体设置,flierprops={'marker':'o','markersize':4,'markerfacecolor':'red'} #异常值设置,meanprops={'marker':'o','markersize':6,'markerfacecolor':'indianred'} #均值设置,medianprops={'linestyle':'--','color':'blue'}   #中位数设置)
plt.show()
  • 运行结果

7、雷达图

雷达图:又被叫做蜘蛛网图,适用于显示三个或更多的维度的变量的强弱情况

plt.polar来绘制雷达图,x轴的坐标点应该为弧度(2*PI=360°)

  • 范例
import numpy as np
properties = ['输出','KDA','发育','团战','生存']
values = [40,91,44,90,95,40]
theta = np.linspace(0,np.pi*2,6)
plt.polar(theta,values)
plt.xticks(theta,properties)
plt.fill(theta,values)
  • 运行结果

  • 注意事项
  1. 因为polar并不会完成线条的闭合绘制,所以我们在绘制的时候需要在theta中和values中在最后多重复添加第0个位置的值,然后在绘制的时候就可以和第1个点进行闭合了。
  2. polar只是绘制线条,所以如果想要把里面进行颜色填充,那么需要调用fill函数来实现。
  3. polar默认的圆圈的坐标是角度,如果我们想要改成文字显示,那么可以通过xticks来设置。

第二章 人工智能专题之Python进阶 - Matplotlib库相关推荐

  1. python如何安装matplotlib_详解python安装matplotlib库三种失败情况

    (可能只有最后一句命令有用,可能全篇都没用) (小白方法,可能只适用于本人情况) 安装matplotlib时,出现的三种失败情况 1.read timed out 一开始我在pycharm终端使用pi ...

  2. python 颜色_如何使用python中matplotlib库分析图像颜色

    用代码分析图像可能很困难.你如何使代码"理解"图像的上下文? 通常,使用AI分析图像的第一步 是找到主要颜色.在如何使用python中matplotlib库分析图像颜色中,我们将使 ...

  3. Python的matplotlib库画图不能显示中文问题解决

    Python的matplotlib库画图不能显示中文问题解决 参考文章: (1)Python的matplotlib库画图不能显示中文问题解决 (2)https://www.cnblogs.com/CQ ...

  4. Ubuntu16.04 下python的matplotlib库加入中文字体(微软雅黑)

    Ubuntu16.04 下python的matplotlib库加入中文字体 一.首先安装微软雅黑字体 1.下载或者拷贝微软雅黑字体 2.将待安装的字体复制到Ubuntu下面的字体位置`/usr/sha ...

  5. Python学习-Matplotlib库绘制简单点阵图、线型图操作

    Python学习-Matplotlib库绘制简单散点图图和线型图.标签设置以及刻度线设置操作 目录 1.Matplotlib绘图细节的简单理解 2.绘制点图.线型图 3.给图表设置复杂标注 4.移动刻 ...

  6. python的matplotlib库绘制条形图、散点图、饼图、折线图

    python的matplotlib库绘制条形图.散点图.饼图.折线图 当我们学会了爬虫,抓取到了一些数据,接下来就是做数据分析了.本文章介绍绘制图形的基本代码. 打开cmd用pip 安装,若输入pip ...

  7. Python 之matplotlib库的安装及Read timed out Error的解决方案

    Python 之matplotlib库的安装 打开cmd窗口.点击开始栏,搜索cmd并打开. 找到安装的Python路径.可以通过右键点击Python快捷键,查找文件路径.(博主电脑并未分盘,故安装到 ...

  8. python的matplotlib库怎么安装,用pip给python安装matplotlib库的详细教程

    Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. 1.首先在python里安装pip,打开安装python的文件夹,找到pyt ...

  9. python课本第二章答案_《Python自然语言处理》答案第一、二章

    第一章 112/(4+1) 226**100 4len(text2) len(set(text2)) 7len(list(nltk.bigrams(text5))) 15[w for w in sor ...

  10. python 二维强度图_荐 python数据分析matplotlib库使用之二维图形绘制

    本篇内容会在后期不定时更新 什么是matplotlib matplotlib是最流行的python底层绘图库,主要做数据可视化图表. 为什么要学习matplotlib 能将数据进行可视化,更直观的呈现 ...

最新文章

  1. 想要学习Python爬虫的你,真的了解爬虫最基础的知识储备吗?
  2. 【FFmpeg】FFmpeg常用基本命令
  3. 计算机文件夹报告范文,2020年计算机实验报告打印(例文).docx
  4. 基于Knative开发应用
  5. nacos未授权访问漏洞【原理扫描】
  6. devops 分支管理策略_DevOps招聘策略以吸引顶尖人才
  7. springboot细节挖掘(日志系统)
  8. dnf新起号怎么才不出人脸_DNF玩家花8千买号,还不到1年,眼前的一幕让他目瞪口呆...
  9. idea redis图形化_5.13redis图形化工具---idea中配置redis密码
  10. 侯捷大师畅谈技术人生与读书感悟
  11. 部署SCOM2012 SP1
  12. [2018.03.13 T2] 过河(river)
  13. 同一个接口返回多种数据类型
  14. 什么是配置文件,以及如何编辑它们?
  15. linux压缩文件zip,在 Linux 上压缩文件:zip 命令的各种变体及用法
  16. 【转】Android兼容性测试的一些坑
  17. 阿里云申请免费SSL证书
  18. 水面反光如何拍摄_拍摄水景的技巧方法
  19. RPC远程调用(RMI的方式实现RPC、HttpClient实现RPC远程调用)
  20. MOOC《Python语言程序设计》(第15次)Python计算生态概览(第九周)

热门文章

  1. 如何安装王码五笔字型输入法86版
  2. Google Play 应用上架流程
  3. python身份证号码解析编程_Python实现身份证号码解析
  4. Jade模板引擎教程
  5. Android APP压力测试 之Monkey日志自动分析脚本
  6. 适配器模式(Adapter Pattern)
  7. ios safari 模拟器_Safari调试iOS应用
  8. 一个无限批量下载百度美女图片的demo
  9. 设计类-Gliffy Diagram的安装使用
  10. HFSS学习笔记—18.SMA模拟端口