Python利用matplotlib绘制散点图的新手教程


Posted in Python onNovember 05, 2020

前言

上篇文章介绍了使用matplotlib绘制折线图,参考:https://3water.com/article/198991.htm,本篇文章继续介绍使用matplotlib绘制散点图。

一、matplotlib绘制散点图

# coding=utf-8
import matplotlib.pyplot as plt
 
 
years = [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019]
turnovers = [0.5, 9.36, 52, 191, 350, 571, 912, 1027, 1682, 2135, 2684]
plt.figure(figsize=(10, 10), dpi=100)
plt.scatter(years, turnovers)
plt.show()

运行结果:

Python利用matplotlib绘制散点图的新手教程

scatter(): matplotlib中绘制散点图的函数。可以传入很多参数,一般传入两个列表,分别是散点图中的x值和y值。上面的例子中使用2009年至2019年这十一年天猫双11的总成交额数据。

散点图根据提供的两组数据,构成图形中的多个坐标点。根据坐标点的分布,分析两个变量之间是否存在某种关联,或总结坐标点的分布趋势,用于预测数据的走势。

上面的代码已经实现了简单的散点图,但只把点绘制出来了,很多信息都不完整,所以需要进行优化。

二、matplotlib优化散点图

import matplotlib.pyplot as plt
 
 
years = [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019]
turnovers = [0.5, 9.36, 52, 191, 350, 571, 912, 1027, 1682, 2135, 2684]
plt.figure(figsize=(10, 15), dpi=100)
plt.scatter(years, turnovers, c='red', s=100, label='成交额')
plt.xticks(range(2008, 2020, 1))
plt.yticks(range(0, 3200, 200))
plt.xlabel("年份", fontdict={'size': 16})
plt.ylabel("成交额", fontdict={'size': 16})
plt.title("历年天猫双11总成交额", fontdict={'size': 20})
plt.legend(loc='best')
plt.show()

运行结果:

Python利用matplotlib绘制散点图的新手教程

在第一次绘制的散点图中,已经看出了点的大概分布情况,所以在使用figure()函数创建图像时,可以修改figsize参数调整图像尺寸,设置更好的图像比例。

在调用scatter()函数绘制散点图时,使用c='颜色'来设置点的颜色,使用s='大小'来设置点的大小,并设置label用于图例展示。

第一次的散点图中,x轴上没有显示所有的年份刻度,最后一个点已经分布到了图形的右上角,所以使用xticks()和yticks()来设置x轴和y轴的刻度标签和范围。

使用xlabel()和ylabel()设置x轴和y轴的标签,说明x轴和y轴的含义。使用title()设置散点图的标题,说明散点图展示的数据。使用legend()将图例展示出来。

这样一张基本功能完整,信息完整的散点图就完成了。

三、matplotlib散点图区分点的颜色和大小

import matplotlib.pyplot as plt
import numpy as np
 
 
years = [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019]
turnovers = [0.5, 9.36, 52, 191, 350, 571, 912, 1027, 1682, 2135, 2684]
plt.figure(figsize=(10, 15), dpi=100)
size = list()
for tur in turnovers:
 size.append(tur) if tur > 100 else size.append(100)
plt.xticks(range(2008, 2020, 1))
plt.yticks(range(0, 3200, 200))
plt.scatter(years, turnovers, c=np.random.randint(0, 50, 11), s=size)
plt.xlabel("年份", fontdict={'size': 16})
plt.ylabel("成交额", fontdict={'size': 16})
plt.title("历年天猫双11总成交额", fontdict={'size': 20})
plt.show()

运行结果:

Python利用matplotlib绘制散点图的新手教程

上一张散点图中已经对数据作了基本的展示,为了使数据展示效果更好,可以对散点图进行美化。

数据是历年双11的总成交额,每年的数据是独立的,可以用不同的颜色来区分。这里使用numpy中的random.randint()随机生成11个值,将这11个随机的值传给scatter()函数中的c参数,使每一个点的颜色不一样,可以更好地表示每个点的独立性。

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

成交额是逐年变化的,为了从散点图中体现出大小的差异,可以根据成交额的大小设置点的大小。这里直接将成交额作为点的大小(成交额很小的设置一个值,图形中的点不小于这个值),得到由11个值组成的列表,传给scatter()函数中的s参数,可以体现每个点的大小差异(成交额越大点越大)。

四、matplotlib散点图的趋势简单分析

import matplotlib.pyplot as plt
import numpy as np
import math
 
 
years = [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019]
turnovers = [0.5, 9.36, 52, 191, 350, 571, 912, 1027, 1682, 2135, 2684]
squares = [math.pow(year-2008, 3.3) for year in years]
powers = [math.pow(2, year-2008) for year in years]
plt.figure(figsize=(10, 15), dpi=100)
size = list()
for tur in turnovers:
 size.append(tur) if tur > 100 else size.append(100)
plt.xticks(range(2008, 2020, 1))
plt.yticks(range(0, 3200, 200))
plt.scatter(years, turnovers, c=np.random.randint(0, 50, 11), s=size, label='成交额')
plt.plot(years, squares, color='red', label='x^3.4')
plt.plot(years, powers, color='blue', label='2^n')
plt.legend(loc='best', fontsize=16, markerscale=0.5)
plt.xlabel("年份", fontdict={'size': 16})
plt.ylabel("成交额", fontdict={'size': 16})
plt.title("历年天猫双11总成交额", fontdict={'size': 20})
plt.show()

运行结果:

Python利用matplotlib绘制散点图的新手教程

散点图的作用主要是用于分析数据的趋势,用于预测未来的数据。比如我想预测2020年天猫双11的总成交额,通过对比的方式,简单分析一下这个趋势更接近指数函数还是更接近多次函数。

在散点图中,我绘制了两条曲线,y=2^x和y=x^(3.4),一条是2为底的指数函数,一条是x的3.4次方(三次函数ax^3+bx^2+cx+d),可以看到双11总成交额的变化趋势更接近三次函数。

这里我只是简单对比一下,三次函数还有二次项、一次项和常数项,所以x^(3.4)中的0.4可以通过二次项、一次项和常数项来补充,指数函数的变化趋势太快,与双11总成交额的变化趋势差异很大。这种简单对比是很粗糙的,只是为了说明散点图可以用于分析趋势。真实的分析不能简单看每年的数据,需要考虑很多因素(甚至因为某个因素的加入,成交额已经快到天花板了,很可能后面会下降)。

总结

到此这篇关于Python利用matplotlib绘制散点图的文章就介绍到这了,更多相关Python matplotlib绘制散点图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python开发的小球完全弹性碰撞游戏代码
Oct 15 Python
python实现ftp客户端示例分享
Feb 17 Python
Python中绑定与未绑定的类方法用法分析
Apr 29 Python
深入理解Python对Json的解析
Feb 14 Python
利用Python实现Windows定时关机功能
Mar 21 Python
python实现单线程多任务非阻塞TCP服务端
Jun 13 Python
pandas 读取各种格式文件的方法
Jun 22 Python
python 计算数据偏差和峰度的方法
Jun 29 Python
由面试题加深对Django的认识理解
Jul 19 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
Nov 11 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
PyCharm 在Windows的有用快捷键详解
Apr 07 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
Nov 05 #Python
Python word文本自动化操作实现方法解析
Nov 05 #Python
Python自动化办公Excel模块openpyxl原理及用法解析
Nov 05 #Python
Python中用xlwt制作表格实例讲解
Nov 05 #Python
如何利用pycharm进行代码更新比较
Nov 04 #Python
python产生模拟数据faker库的使用详解
Nov 04 #Python
Django配置跨域并开发测试接口
Nov 04 #Python
You might like
基于Linux调试工具strace与gdb的常用命令总结
2013/06/03 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
基于node.js之调试器详解
2017/08/22 Javascript
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
详解JavaScript栈内存与堆内存
2019/04/04 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
[02:08]DOTA2英雄基础教程 马格纳斯
2014/01/17 DOTA
python实现问号表达式(?)的方法
2013/11/27 Python
Python数组条件过滤filter函数使用示例
2014/07/22 Python
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
Python中xrange与yield的用法实例分析
2017/12/26 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
python模拟登陆,用session维持回话的实例
2018/12/27 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
基于Python函数和变量名解析
2019/07/19 Python
python3 xpath和requests应用详解
2020/03/06 Python
django admin 添加自定义链接方式
2020/03/11 Python
HTML5的Video标签有部分MP4无法播放的问题解析(多图)
2017/08/18 HTML / CSS
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
一加手机美国官方网站:OnePlus美国
2019/09/19 全球购物
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
教育科学研究生自荐信
2013/10/09 职场文书
汽车专业人才自我鉴定范文
2013/12/29 职场文书
国际商务专业毕业生自我鉴定2014
2014/09/27 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
初中开学典礼新闻稿
2015/07/17 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书