广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python进阶Matplotlib库图绘制
  • 522
分享到

Python进阶Matplotlib库图绘制

2024-04-02 19:04:59 522人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录1、基本使用1.1、线条样式 & 颜色1.2、轴&标题1.3、marker设置1.4、注释文本1.5、设置图形样式2、条形图2.1、横向条形图 范例2.2、分组条

中文字体设置:

# 字体设置
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)点线形式

(2)线条颜色

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来实现,其中的参数如下:

x:饼图的比例序列。labels:饼图上每个分块的名称文字。explode:设置某几个分块是否要分离饼图。autopct:设置比例文字的展示方式。比如保留几个小数等。shadow:是否显示阴影。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来绘制箱线图,这个方法的相关参数如下:

x:需要绘制的箱线图的数据。notch:是否展示置信区间,默认是False。如果设置为True,那么就会在盒子上展示一个缺口。sym:代表异常点的符号表示,默认是小圆点。vert:是否是垂直的,默认是True,如果设置为False那么将水平方向展示。whis:上下限的系数,默认是1.5,也就是上限是Q3+1.5IQR,可以改成其他的。也可以为一个序列,如果是序列,那么序列中的两个值分别代表的就是下限和上限的值,而不是再需要通过IQR来计算。positions:设置每个盒子的位置。widths:设置每个盒子的宽度。labels:每个盒子的labelmeanlineshowmeans:如果这两个都为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)

运行结果:

注意事项:

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

到此这篇关于Python进阶Matplotlib库图绘制的文章就介绍到这了,更多相关Python Matplotlib库内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python进阶Matplotlib库图绘制

本文链接: https://www.lsjlt.com/news/119087.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python进阶Matplotlib库图绘制
    目录1、基本使用1.1、线条样式 & 颜色1.2、轴&标题1.3、marker设置1.4、注释文本1.5、设置图形样式2、条形图2.1、横向条形图 范例2.2、分组条...
    99+
    2022-11-11
  • Python使用Matplotlib绘制三维折线图(进阶篇)
    1.0简介: 三维图像技术是现在国际最先进的计算机展示技术之一,任何普通电脑只需要安装一个插件,就可以在网络浏览器中呈现三维的产品,不但逼真,而且可以动态展示产品的组合过程,特别适合远程浏览。 立体图视觉上层次分明色彩鲜艳,具有很强的视觉冲...
    99+
    2023-09-29
    python 开发语言
  • python matplotlib库绘图实战之绘制散点图
    目录一.导入库二.设置文字三.设置坐标轴参数四.绘制点五.对点的继续处理1.自定义颜色2.颜色映射补充1补充2补充3总结一.导入库 import matplotlib.pyplot ...
    99+
    2022-11-11
  • 用Python的绘图库(matplotlib)绘制小波能量谱
    时间小波能量谱 反映信号的小波能量沿时间轴的分布。 由于小波变换具有等距效应,所以有: 式中 表示信号强度,对于式①在平移因子b方向上进行加权积分 式中 代表时间...
    99+
    2022-11-12
  • 使用matplotlib怎么绘制一个阶梯图
    这篇文章将为大家详细讲解有关使用matplotlib怎么绘制一个阶梯图,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。step函数概述step函数用于绘制阶梯图。根据源码可知,step函数是对...
    99+
    2023-06-06
  • Python用 matplotlib 绘制柱状图
    目录1. 柱状图概述1.1什么是柱状图1.2柱状图使用场景1.3柱状图绘制步骤1.3案例展示 2. 柱状图属性2.1柱状体颜色填充2.2状描边设置2.3状体边框宽度2.4刻度标签3....
    99+
    2022-11-12
  • 利用python库matplotlib绘制不同的图表
    目录1、绘制简单曲线图2、绘制单条曲线图3、绘制多条曲线4、绘制直方图5、绘制散点图1、绘制简单曲线图 思路:通过3个坐标点,绘制曲线 import matplotlib.pyplo...
    99+
    2022-11-13
  • Python利用Matplotlib库实现绘制饼形图
    目录1.plt.pie()2. 饼图基本3. 饼状图进阶4. 环形图5. 内嵌环形图1.plt.pie() 饼图 常常用来显示 整体中各部分所占的比例,在python-matplot...
    99+
    2022-11-10
  • Python中如何使用Matplotlib库绘制图形
    目录前言一、简单的正弦函数与余弦函数二、进阶版正弦函数与余弦函数1.改变颜色与粗细2.设置图片边界3.设置记号4.设置记号的标签5.设置X,Y轴6.完整代码三、绘制简单的折线图总结前...
    99+
    2022-11-11
  • Python中怎么使用Matplotlib库绘制图形
    这篇文章主要介绍“Python中怎么使用Matplotlib库绘制图形”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中怎么使用Matplotlib库绘制图形”文章能帮助大家解决问题。一、...
    99+
    2023-07-02
  • 基于Python matplotlib库怎么绘制箱线图
    这篇文章主要介绍了基于Python matplotlib库怎么绘制箱线图的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于Python matplotlib库怎么绘制箱线图文章都会有所收获,...
    99+
    2023-06-30
  • Python+matplotlib绘制饼图和堆叠图
    目录一、pie()函数用来绘制饼图二、一个简单的例子三、 堆叠图饼图常用于统计学模块,画饼图用到的方法为:pie( ) 一、pie()函数用来绘制饼图 pie(x, explode=...
    99+
    2022-11-10
  • Python利用matplotlib绘制直方图
    目录1. 直方图概述 1.1什么是直方图? 1.2直方图使用场景 1.3直方图绘制步骤 1.4案例展示2. 直方图属性 2.1设置颜色 2.2设置长条形数目 2.3设置透明度 2.4...
    99+
    2022-11-12
  • Python Matplotlib如何绘制多子图
    这篇文章将为大家详细讲解有关Python Matplotlib如何绘制多子图,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。通过获取子图的label和线型来合并图例注意添加label#导入数据(读...
    99+
    2023-06-29
  • Python+matplotlib如何绘制堆叠图
    这篇文章主要介绍Python+matplotlib如何绘制堆叠图,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、水平堆叠图堆叠图其实就是柱状图的一种特殊形式from matplotlib imp...
    99+
    2023-06-29
  • python使用matplotlib绘制折线图
    前言: 我的python学习也告一段落了。不过有些,方法还是打算总结一下和大家分享。我整理了使用matplotlib绘制折线图的一般步骤,按照这个步骤走绘制折线图一般都没啥问题。其实...
    99+
    2022-11-10
  • Python+matplotlib实现饼图的绘制
    目录一、整理数据二、创建饼图三、爆炸效果四、阴影效果五、为饼图加上百分比六、让饼图旋转不同的角度七、为饼图添加边缘线八、为饼图数据分组一、整理数据 关于cnboo1.xlsx,我放在...
    99+
    2022-11-13
  • Python matplotlib plotly绘制图表详解
    目录一、整理数据二、折线图三、散点图四、饼图五、柱形图六、点图(设置多个go对象)七、2D密度图八、简单3D图一、整理数据 以300部电影作为数据源 import pandas as...
    99+
    2022-11-13
  • Python如何绘制Matplotlib散点图
    本篇内容主要讲解“Python如何绘制Matplotlib散点图”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何绘制Matplotlib散点图”吧!使用plt.plot方法:在上篇...
    99+
    2023-06-30
  • Python如何绘制Matplotlib折线图
    本篇内容介绍了“Python如何绘制Matplotlib折线图”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Matplotlib 绘图在...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作