Python:Matplotlib(折线图/散点图/条形图/直方图/饼图)
Python:Matplotlib
- Matplotlib介绍
- 1)折线图
- 折线图介绍:
- 画折线图的具体案例:
- 2)散点图
- 散点图介绍:
- 画散点图的具体案例:
- 3)条形图
- 条形图介绍:
- 画条形图的具体案例:
- 4)直方图
- )直方图介绍:
- 画条形图的具体案例:
- 5)饼图
- 饼图介绍:
- 画饼图的具体案例:
Matplotlib介绍
Matplotlib包:
Matplotlib包专门用于开发2D图表、3D图表。(也就是画统计图)
Matplotlib官网:link.
Matplotlib下载和安装:建议直接下载安装Anaconda,直接拥有一个庞大包库,省去各种麻烦。link.
如果画图时遇到中文乱码问题:link.
matplotlib更多例子看官网:link.link.
统计图的优点:
统计表虽然能做到非常精确,但是不够直观。
统计图虽然不会那么精确,但更直观。
关于数据源:
把数据来源写一下,因为不同数据来源找到的数据或多或少有点差别,写下数据来源就算是一个凭证,也方便做后期校对。
1)折线图
折线图介绍:
折线图的特点:用于呈现数据的趋势变化
画折线图步骤:
1.导入matplotlib.pyplot
2.设定画图框架,如清晰度、框架大小、字体等等…
3.折线图的数据
4.画出折线图,设置各种参数(如图片水印、折线图各种效果…) + 设置x轴y轴(如刻度…) + 标题
附注:具体的各种参数可以看帮助文档或者网上找,自己可以慢慢调试,看各种参数的效果。
画折线图的具体案例:
1.一幅折线图
如果表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟气温的变化情况?
附注:题目和数据来源于网络课程
import matplotlib.pyplot as plt
import random
def all_title(xlabel, ylabel, title):plt.xlabel(xlabel) #x轴标题plt.ylabel(ylabel) #y轴标题plt.title(title) #总标题
#画图框架
plt.figure(figsize = (20, 6), dpi = 80)
plt.rcParams['font.sans-serif']=['SimHei'] #字体
#数据
x = range(120)
y = [random.randint(20, 35) for i in range(120)]
#折线图
plt.plot(x, y)
_xticks = ["10点{}分".format(i) for i in x if i < 60]
_xticks += ["11点{}分".format(i-60) for i in x if i >= 60]
plt.xticks(x[::4], _xticks[::4], rotation = 45) #x轴刻度
all_title("时间", "温度", "温度随时间变化趋势图")
plt.text( 1, 20, "作者:xw", fontsize=40, color="gray", alpha=0.4) #水印
plt.show()
2.多幅折线图
假设大家在30岁的时候,根据自己的实际情况,统计出来了你和你同桌各自从11岁到30岁每年交的女(男)朋友的数量如列表y1和y2,请在一个图中绘制出该数据的折线图,以便比较自己和同桌20年间的差异,同时分析每年交女(男)朋友的数量走势。
附注:题目和数据来源于网络课程
import matplotlib.pyplot as plt
def set_axes(axes):plt.sca(axes) #哪个图需要处理_xaxes = ["{}岁".format(i) for i in x] plt.xticks(x, _xaxes)#x轴刻度plt.xlabel("年龄") #x轴标题plt.ylabel("朋友个数") #y轴标题plt.title("朋友个数随年龄变化") #总标题
#画图框架
fig, axes = plt.subplots(nrows = 1, ncols = 2, figsize = (20, 8), dpi = 80)
#数据
x = range(11,31)
y1 = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 5, 4, 3, 3, 1, 1, 1]
y2 = [1, 0, 3, 1, 2, 2, 3, 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1]
#折线图
axes[0].plot(x, y1, color = "r", linestyle = "--", linewidth = 1, alpha = 1)
set_axes(axes[0])
axes[1].plot(x, y2 )
set_axes(axes[1])
plt.text( 1, 1, "作者:xw", fontsize=40, color="gray", alpha=0.4) #水印
plt.show()
2)散点图
散点图介绍:
散点图特点:呈现数据的分布规律、离散化程度
画散点图步骤:
1.导入matplotlib.pyplot
2.设定画图框架,如清晰度、框架大小、字体等等…
3.散点图的数据
4.画出散点图,设置各种参数(如图片水印、散点图各种效果…) + 设置x轴y轴(如刻度…) + 标题
附注:具体的各种参数可以看帮助文档或者网上找,自己可以慢慢调试,看各种参数的效果。
散点图的具体参数:
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None,vmin=None,vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)
x,y :横纵坐标
s :散点(标记)的大小,默认20
c :散点(标记)的颜色,默认蓝色。b蓝色,c青色,g绿色,k黑色,m洋红,r红色,w白色,y黄色
marker :散点(标记)的形状,默认是".",即圆点。可自定义,可以自定义成其它形状,也可以自定义成文字,如" h e l l o hello hello"
cmap :英文对应colormap,用于表示从第一个点开始到最后一个点之间颜色渐进变化,如c=y1,cmap=plt.cm.Reds。
norm: normalize,
vmin:
vmax:
alpha :散点形状的透明度,alpha的范围为[0,1],从透明到不透明。
linewidths :散点(标记)的边框的宽度
verts:
edgecolors :散点(标记)的边框颜色
hold:
data:
**kwargs:
画散点图的具体案例:
北京2016年3,10月份每天白天的最高气温(分别位于列表y1,y2),那么此时如何寻找出气温和随时间(天)变化的某种规律?
附注:题目和数据来源于网络课程
import matplotlib.pyplot as plt
def all_title(xlabel, ylabel, title):plt.xlabel(xlabel) #x轴标题plt.ylabel(ylabel) #y轴标题plt.title(title) #总标题
#画图框架
plt.figure(figsize = (20, 8), dpi = 100)
#数据
x1 = range(1, 32)
x2 = range(50, 81)
y1 = [11,17,16,6,12,15,14,17,14,17,18,21,12,15,14,17,18,21,16,17,20,17,15,16,18,19,21,26,23,24,22]
y2 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]
#散点图
plt.scatter(x1, y1)
plt.scatter(x2, y2)
_xticks = ["3月{}号".format(i) for i in x1]
_xticks += ["10月{}号".format(i) for i in x1]
plt.xticks(x[::2], _xticks[::2], rotation = 45) #x轴刻度
all_title("时间", "温度", "温度随时间变化分布规律")
plt.text( 5, 5, "作者:xw", fontsize=40, color="gray", alpha=0.4) #水印
plt.show()
3)条形图
条形图介绍:
条形图特点:
画条形图步骤:
1.导入matplotlib.pyplot
2.设定画图框架,如清晰度、框架大小、字体等等…
3.条形图的数据
4.画出条形图,设置各种参数(如图片水印、散点图各种效果…) + 设置x轴y轴(如刻度…) + 标题
附注:具体的各种参数可以看帮助文档或者网上找,自己可以慢慢调试,看各种参数的效果。
条形图分类:
1.竖条:(条形图的条是竖的)
竖条:matplotlib.pyplot.bar(横坐标,纵坐标),条粗细用width
2.横条:(条形图的条是横的)
横条:matplotlib.pyplot.barh(纵坐标,横坐标),条粗细用height,更多详细信息看帮助文档help(plt.barh)
画条形图的具体案例:
附注:作图数据来源于网络课程
import matplotlib.pyplot as plt
def all_title(xlabel, ylabel, title):plt.xlabel(xlabel) #x轴标题plt.ylabel(ylabel) #y轴标题plt.title(title) #总标题
#画图框架
plt.figure(figsize = (20, 8), dpi = 100)
#数据
_x = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:殊死一战","蜘蛛侠:英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
y = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23]
x = range(len(_x))
#条形图
plt.bar(x, y, width = 0.7)
plt.xticks(x, _x, rotation = 70) #x轴刻度(仅是把数据列表放进去,如果需要调整步长就调整步长)
all_title("电影", "票房(亿)", "电影票房数据对比图")
plt.text( 5, 14, "作者:xw", fontsize=40, color="gray", alpha=0.4) #水印
plt.show()
附注:作图数据来源于网络课程
import matplotlib.pyplot as plt
def all_title(xlabel, ylabel, title): #封装标题们plt.xlabel(xlabel) #x轴标题plt.ylabel(ylabel) #y轴标题plt.title(title) #总标题
#画图框架
plt.figure(figsize = (20, 8), dpi = 100)
#数据
x = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:殊死一战","蜘蛛侠:英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
y = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23]
#条形图
plt.barh(x, y, height = 0.5)
all_title("票房(亿)", "电影", "电影票房数据对比图")
plt.text( 5, 14, "作者:xw", fontsize=40, color="gray", alpha=0.4) #水印
plt.show()
4)直方图
)直方图介绍:
直方图特点:
频率分布直方图 和 频数分布直方图 的区别:
频率分布直方图 纵坐标:频率/组距
频数分布直方图 纵坐标:频数
画条形图的具体案例:
1.分组无余数的情况:
附注:作图数据来源于网络课程
import matplotlib.pyplot as plt
def all_title(xlabel, ylabel, title): #封装标题们plt.xlabel(xlabel) #x轴标题plt.ylabel(ylabel) #y轴标题plt.title(title) #总标题
#画图框架,一个图形,图形里可显示中文
plt.figure(figsize = (20, 8), dpi = 100)
#数据
a=[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]
width = 3 #组距
num = int((max(a)-min(a)) / width) #组数= 极差/组距,极差注意加括号
#直方图
plt.hist(a, num)
plt.xticks(range(min(a), max(a) + 1)[::width])
plt.grid(linestyle = ":", alpha = 0.7) #网格
all_title("电影时长", "电影数", "电影数量及时长统计")
plt.show()
2.分组无余数的情况:
附注:作图数据来源于网络课程
import matplotlib.pyplot as plt
def all_title(xlabel, ylabel, title): #封装标题们plt.xlabel(xlabel) #x轴标题plt.ylabel(ylabel) #y轴标题plt.title(title) #总标题
#画图框架,一个图形,图形里可显示中文
plt.figure(figsize = (20, 8), dpi = 100)
plt.rcParams['font.sans-serif']=['SimHei'] #字体
#数据
a=[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]
width = 5 #组距
num = int((max(a)-min(a)) / width) #组数= 极差/组距,极差注意加括号
x = [min(a) + i * width for i in range(num+2)] #78+0*5=78 78+1*5=83 78+10=88 93 .....分组区间,假设组数15.5 到了则例取15 我们起码要用到16 所以必须17,所以要加2
#直方图
plt.hist(a, x)
plt.xticks(x)
plt.grid(linestyle = ":", alpha = 0.7) #网格
all_title("电影时长", "电影数", "电影数量及时长统计")
plt.show()
5)饼图
饼图介绍:
画饼图的参数:
matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None,
pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None,
radius=None, counterclock=True, wedgeprops=None, textprops=None,
center=(0, 0), frame=False, rotatelabels=False, hold=None, data=None)
x :饼图各部分的比例,如果sum(x)>1(饼图各部分的比例之和),会将多出的部分进行均分。
explode :饼图各部分离开圆心的距离。默认值为0,不离开圆心。
labels :饼图各部分外侧显示的说明文字。
colors :饼图各部分的颜色。默认值为None,使用当前活动环的颜色。
autopct :饼图各部分百分比,可以使用format字符串或者format function。’%1.1f’:指小数点后保留一位有效值,’%1.2f%%’:保留两位小数点,增加百分号(%)。
pctdistance :autopct的位置,默认值为0.6。
shadow :饼图是否阴影。默认值为False,即没有阴影。
labeldistance :labels的位置,默认值为1.1,默认在饼图外侧,小于1则绘制在饼图里面。
startangle :起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起。
radius :控制饼图半径,默认值为1;
counterclock :指定指针方向;默认为:True,即逆时针。False即可改为顺时针。
wedgeprops :字典类型,可选参数,默认值:None。参数字典传递给wedge对象用来画一个饼图。例如:wedgeprops={‘linewidth’:3}设置wedge线宽为3。
textprops :设置标签(labels)和比例文字的格式;字典类型,可选参数,默认值为:None。传递给text对象的字典参数。
center :浮点类型的列表,可选参数,默认值:(0,0)。图标中心位置。
frame :默认值:False。如果是true,绘制带有表的轴框架。
rotatelabels :默认值为:False。如果为True,旋转每个label到指定的角度。
画饼图的具体案例:
附注:作图数据来源于网络课程
import matplotlib.pyplot as plt
#画图框架
plt.figure(figsize = (20, 8), dpi = 100)
#数据
movie_name = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴',
'降魔传','追捕','七十七天','密战','狂兽','其它']
place_count = [60605,54546,45819,28243,13270,9945,7679,6799,6101,4621,20105]
colors = ['b','r','g','y','c','m','y','k','c','g','g']
#饼图
plt.pie(place_count, labels = movie_name, autopct = "%3.2f%%", colors = colors)
plt.axis("equal") #一定画出圆形
plt.legend() #显示具体描述性信息,默认右上角
plt.text( 1, 1, "作者:xw", fontsize=40, color="gray", alpha=0.4) #水印
plt.show()
以后继续补充…
Python:Matplotlib(折线图/散点图/条形图/直方图/饼图)相关推荐
- python学习之数据分析(二):Matplotlib库:常用画图技巧, 折线图, 散点图,柱状图,直方图, 饼图
一.Matplotlib之HelloWorld 1. 什么是Matplotlib: 专门用于开发2D图表(包括3D图表) 使用起来及其简单 以渐进.交互式方式实现数据可视化 2. matplotlib ...
- 数据分析基础学习_Matplotlib_常见图形及绘制(折线图/散点图/柱状图/直方图/饼图)
1.3 常见图形及绘制 matplotlib可以绘制折线图.散点图.柱状图.直方图.饼图 1.3.1 常见图形种类及意义 折线图:以折线的上升或下降来表示统计量的增减变化的统计图 特点:可以显示数据的 ...
- 数据分析学习笔记—matplotlib折线图、条形图、直方图、饼状图基础绘制
文章目录 一.Matplotlib概念和基本属性设置思维导图 二.折线图基础绘制及代码中相关参数解析 1.代码 2.结果展示 3.Matplotlib图组件-官方 4.jupyter Notebook ...
- python做动态折线图_python matplotlib折线图样式实现过程
python matplotlib 同时画箱线图和折线图的问题 python3 matplotlib画两个折线图,X轴相同,Y轴生...你的memo和cpui里面是字符串,不是数字 将memo.app ...
- python使用matplotlib可视化:折线图、条形图、柱状图、直方图、饼图、雷达图(极坐标图)
python使用matplotlib可视化:折线图.条形图.柱状图.直方图.饼图.雷达图(极坐标图) 目录
- python简单代码画曲线图教程-Python绘制折线图和散点图的详细方法介绍(代码示例)...
本篇文章给大家带来的内容是关于Python绘制折线图和散点图的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.绘制折线图和散点图要用到matplotlib ...
- python画折线图代码-Python绘制折线图和散点图的详细方法介绍(代码示例)
本篇文章给大家带来的内容是关于Python绘制折线图和散点图的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.绘制折线图和散点图要用到matplotlib ...
- Python数据分析(三)matplotlib折线图应用实例——自定义图形风格
往期推荐: Python数据分析(一)matplotlib基础绘图和调整x轴刻度 Python数据分析(二)matplotlib折线图应用实例--绘制10点到12点的气温 Python数据分析(四)m ...
- Python数据分析之matplotlib折线图
Python数据分析之matplotlib折线图 1.需求 2.需求分析 3.代码示例 4.总结和思考 1.需求 需求假设大家在30岁,根据实际情况,统计出你和同桌从11岁倒30岁做成的男女朋友数量, ...
最新文章
- Dart中的catchError捕获顺序
- gometalinter代码检查
- 调查:Android的领先地位稳固
- Flex学习的利器《Hello Flex4》
- 网易智慧企业 Node.js 实践(3)| 灰度环境和应用监控
- 判断一个点是否在三角形内
- 使用String.intern()减少内存使用
- java 匿名对象有引用,封闭对象的引用通过匿名类java进行转义
- Oracle中Date和Timestamp的区别
- 跳槽到月薪三万的公司,但是不到半年就后悔了
- MeasureSpec学习
- php 判断来访ip地址是国内还是国外的,验证IP属于国内还是国外的PHP类
- AfxBeginThread第二个参数LPVOID pParam的使用
- 饭店点餐系统的设计与实现
- 【Rust日报】2022-07-06 Android 平台中的 Rust
- 妖怪,你可认得这32个关键字?
- 金融业务系统日志精益化分析
- IDA F5堆栈不平衡的处理
- iPhone突然掉电快是什么情况,该如何解决?
- JS 图片压缩上传并在iOS中矫正方向