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(折线图/散点图/条形图/直方图/饼图)相关推荐

  1. python学习之数据分析(二):Matplotlib库:常用画图技巧, 折线图, 散点图,柱状图,直方图, 饼图

    一.Matplotlib之HelloWorld 1. 什么是Matplotlib: 专门用于开发2D图表(包括3D图表) 使用起来及其简单 以渐进.交互式方式实现数据可视化 2. matplotlib ...

  2. 数据分析基础学习_Matplotlib_常见图形及绘制(折线图/散点图/柱状图/直方图/饼图)

    1.3 常见图形及绘制 matplotlib可以绘制折线图.散点图.柱状图.直方图.饼图 1.3.1 常见图形种类及意义 折线图:以折线的上升或下降来表示统计量的增减变化的统计图 特点:可以显示数据的 ...

  3. 数据分析学习笔记—matplotlib折线图、条形图、直方图、饼状图基础绘制

    文章目录 一.Matplotlib概念和基本属性设置思维导图 二.折线图基础绘制及代码中相关参数解析 1.代码 2.结果展示 3.Matplotlib图组件-官方 4.jupyter Notebook ...

  4. python做动态折线图_python matplotlib折线图样式实现过程

    python matplotlib 同时画箱线图和折线图的问题 python3 matplotlib画两个折线图,X轴相同,Y轴生...你的memo和cpui里面是字符串,不是数字 将memo.app ...

  5. python使用matplotlib可视化:折线图、条形图、柱状图、直方图、饼图、雷达图(极坐标图)

    python使用matplotlib可视化:折线图.条形图.柱状图.直方图.饼图.雷达图(极坐标图) 目录

  6. python简单代码画曲线图教程-Python绘制折线图和散点图的详细方法介绍(代码示例)...

    本篇文章给大家带来的内容是关于Python绘制折线图和散点图的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.绘制折线图和散点图要用到matplotlib ...

  7. python画折线图代码-Python绘制折线图和散点图的详细方法介绍(代码示例)

    本篇文章给大家带来的内容是关于Python绘制折线图和散点图的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.绘制折线图和散点图要用到matplotlib ...

  8. Python数据分析(三)matplotlib折线图应用实例——自定义图形风格

    往期推荐: Python数据分析(一)matplotlib基础绘图和调整x轴刻度 Python数据分析(二)matplotlib折线图应用实例--绘制10点到12点的气温 Python数据分析(四)m ...

  9. Python数据分析之matplotlib折线图

    Python数据分析之matplotlib折线图 1.需求 2.需求分析 3.代码示例 4.总结和思考 1.需求 需求假设大家在30岁,根据实际情况,统计出你和同桌从11岁倒30岁做成的男女朋友数量, ...

最新文章

  1. Dart中的catchError捕获顺序
  2. gometalinter代码检查
  3. 调查:Android的领先地位稳固
  4. Flex学习的利器《Hello Flex4》
  5. 网易智慧企业 Node.js 实践(3)| 灰度环境和应用监控
  6. 判断一个点是否在三角形内
  7. 使用String.intern()减少内存使用
  8. java 匿名对象有引用,封闭对象的引用通过匿名类java进行转义
  9. Oracle中Date和Timestamp的区别
  10. 跳槽到月薪三万的公司,但是不到半年就后悔了
  11. MeasureSpec学习
  12. php 判断来访ip地址是国内还是国外的,验证IP属于国内还是国外的PHP类
  13. AfxBeginThread第二个参数LPVOID pParam的使用
  14. 饭店点餐系统的设计与实现
  15. 【Rust日报】2022-07-06 Android 平台中的 Rust
  16. 妖怪,你可认得这32个关键字?
  17. 金融业务系统日志精益化分析
  18. IDA F5堆栈不平衡的处理
  19. iPhone突然掉电快是什么情况,该如何解决?
  20. JS 图片压缩上传并在iOS中矫正方向

热门文章

  1. 各种数据库的查询结果限制条数的SQL语法
  2. swift编程语言中文版
  3. 手机端PC端判断 微信浏览器支付宝浏览器判断
  4. mysql删除字段语句
  5. Redis 集合 有序集合 python操作集合
  6. 计算机英语翻译 unit 7 (3)
  7. 【笔记】H.265/HEVC 视频编码(二)——数字视频格式
  8. 什么是宝塔面板?宝塔面板安装和使用教程(详细)
  9. pyecharts 数据可视化 Bar柱状图生成和颜色优化
  10. java.sql.date 与 java.util.date及使用方法