一篇文章掌握Python机器学习绘图库matplotlib(一)

简介: 一篇文章掌握Python机器学习绘图库matplotlib(一)

前言


前面博主介绍过的pandas库,而今天介绍的matplotlib库能和pandas库结合起来,让数据更加的直观,易懂。


Matplotlib 是 Python 的一个绘图库。它包含了大量的工具,你可以使用这些工具创建各种图形,包括简单的散点图,正弦曲线,甚至是三维图形。好了,下面我们直接进入实战代码学习。


折线图


首先,就是我们图标之中常用的折线图,对于折线图来说,能直观的看到数据的涨跌变化,比如股市常用的图形就是折线图,下面我们来看看代码如何实现:

import matplotlib.pyplot as plt
x = ['2020-01', '2020-02', '2020-03', '2020-04', '2020-05', '2020-06', '2020-07', '2020-08']
y = [0, 15, 23, 68, 45, 86, 54, 24]
plt.plot(x, y)
plt.show()


代码非常简单,就是确定X,Y轴的数据,然后显示出来,这段代码显示的效果如下:

当然这是折线图的基本,也是最简单的玩法, 其实对于matplotlib库来说,折线图还有很多的玩法,比如可以修改折线的颜色,折现的样式等,直接上代码:

plt.plot(x, y,'r--')

仅仅只修改这一句就行,r代表虚线的颜色为红色, ‘–’代表折线的样式为–,显示效果如下图所示:

这是最简单的用法,为了便于理解后面的知识点,这里开始深入展开,比如先明确Figure的概念,我们先来看一张图:

图片上,Figure代表画板,Axes/Subplot代表画纸,其他两个英文就是X轴与Y轴,所以假如我们需要在一张画纸上画4个折线图就需要用到这些知识点,代码如下:

x = ['2020-01', '2020-02', '2020-03', '2020-04', '2020-05', '2020-06', '2020-07', '2020-08']
y = [0, 15, 23, 68, 45, 86, 54, 24]
fig = plt.figure()  # 获取画板
ax1 = fig.add_subplot(221)  # 获取画纸
ax1.plot(x, y)
ax2 = fig.add_subplot(222)  # 获取画纸
ax2.plot(x, y)
ax3 = fig.add_subplot(223)  # 获取画纸
ax3.plot(x, y)
ax4 = fig.add_subplot(224)  # 获取画纸
ax4.plot(x, y)
plt.show()


这里我们创建了画板,同时创建了画纸,这里设置为两行行列的画板,同时分别获取某个位置的画纸,这样我们就能画出4个折线图,显示效果如下:


折线图的详细用法

如果使用如上方式先创建画板在获取画纸进行画图的话,我们如何设置其他的参数呢?下面我们直接来看一段代码:

matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['font.family'] = 'sans-serif'
matplotlib.rcParams['axes.unicode_minus'] = False
x = ['2020-01', '2020-02', '2020-03', '2020-04', '2020-05', '2020-06', '2020-07', '2020-08']
y = [0, 15, 23, 68, 45, 86, 54, 24]
fig = plt.figure()  # 获取画板
ax = fig.add_subplot(111)  # 获取画纸
ax.plot(x, y, linestyle='--', marker='o')#设置X,Y数据,显示折现的样式(--),以及数据点的样式(圈)
ax.set_title("我的标题")  # 设置你的标题
ax.set_xlabel('X轴')  # 设置X轴的文字
ax.set_ylabel('Y轴')  # 设置Y轴的文字
ax.set_xticks(['2020-01', '2020-02', '2020-03', '2020-04', '2020-05', '2020-06', '2020-07', '2020-08'])  # 更改X轴刻度
ax.set_xticklabels(['2020-01', '2020-02', '2020-03', '2020-04', '2020-05', '2020-06', '2020-07', '2020-08'],
                   rotation=30, fontsize='small')  # 增加X轴刻度文字旋转角度以及字体大小
ax.grid()#增加网格
ax.tick_params(axis='x', labelsize=7, rotation=45, colors='red')#同样可以设置X轴字体样式旋转角度,文字颜色,第一个参数为哪个轴
for i, j in zip(x, y):
    ax.annotate('%s' % (j), xy=(i, j), xytext=(0, 15), textcoords='offset points', ha='center')
#将详细数据显示在折线图上,
#第一个参数为注释点显示的数据,第二参数为数据显示图中的哪个坐标
# textcoords注释文本的坐标系属性,默认与xycoords属性值相同,也可设为不同的值。除了允许输入xycoords的属性值,还允许输入以下两种:
# offset points相对于被注释点xy的偏移量(单位点)
# offset pixels相对于被注释点xy的偏移量(单位像素)
#第四个参数显示的文字在中间
plt.show()


上面基本把常用的方法全部都写在了代码中,而且注释已经写的非常的详细,这里博主不在过多的赘述,上面代码显示的效果图如下:


柱状图


除了生活中常见的折线图之外,我们还常常见到各种报表中,也有柱状图,同样柱状图也可以通过matplotlib包实现,下面我们先来看一个简单的用法:

x = ['2020-01', '2020-02', '2020-03', '2020-04', '2020-05', '2020-06', '2020-07', '2020-08']
y = [0, 15, 23, 68, 45, 86, 54, 24]
fig = plt.figure()  # 获取画板
ax = fig.add_subplot(111)  # 获取画纸
ax.bar(x, y)
plt.show()


在matplotlib中,我们通过bar实现柱状图,而之前的折现图我们通过plot方法实现,上面是最简单的实现方式,实现效果图如下:


柱状图的详细用法

接着,我们同样深入了解柱状图,看看如何实现,让其效果更佳,同样,我们先来看一段代码:

import matplotlib.pyplot as plt
import matplotlib.colors as col
import matplotlib.cm as cm
import matplotlib
import numpy as np
#下面三行用处为避免中文乱码
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['font.family'] = 'sans-serif'
matplotlib.rcParams['axes.unicode_minus'] = False
x = [2000, 2005, 2010, 2015, 2020, 2025, 2030, 2035]
y = [0, 15, 23, 68, 45, 86, 54, 24]
y2 = [0, 10, 20, 60, 40, 80, 50, 20]
fig = plt.figure()  # 获取画板
ax = fig.add_subplot(111)  # 获取画纸
ax.bar([i + 1 for i in x], y2)
ax.set_title("柱状图")
ax.set_xlabel("X数据")
ax.set_ylabel("Y数据")
ax.grid()#增加网格
ax.tick_params(axis='x', labelsize=7, rotation=45, colors='red')
#annotate对齐方式
#arrowprops绘画箭头
for i, j in zip(x, y):
    ax.annotate('%s' % (j), xy=(i, j), xytext=(0, 25), textcoords='offset points', ha='center',
        arrowprops=dict(facecolor='black', shrink=0.15), fontsize=7)
patterns = {'-', '+', 'x', '\\', '*', 'o', '0', '.', 'v', '^', '1', '2', '3', '4', '8', 's', 'p', 'h'}#柱形图的样式
#cm.ScalarMappable给定的颜色映射返回RGBA颜色之前使用数据标准化
#colors.Normalize使用方法如下:
# class matplotlib.colors.Normalize(vmin=None, vmax=None)
# 参数vmin、vmax分别为要设置的数据范围最小值和最大值;
# 范围外的值分别显示最大值或最小值的颜色。
#cm.hot表示风格
camp1 = cm.ScalarMappable(col.Normalize(min(y), max(y) + 20), cm.hot)
#edgecolor:柱子轮廓色
#color:柱子填充色
#camp1.to_rgba(y)返回颜色值
bars = ax.bar(x, y, alpha=0.5, color=camp1.to_rgba(y), edgecolor='red', label=u'柱形图')
for bar, pattern in zip(bars, patterns):
    bar.set_hatch(pattern)#设置每个柱形的填充样式
ax.legend(loc='upper left')#左上角的提示
plt.show()


折现图的某些方法,在柱状图中依然可以使用,而且上面代码也有柱状图独有的方法函数,其中一些都写了注释,方便大家阅读,上面这段代码显示的效果如下:

当然柱状图并不仅仅只有竖着的才是柱状图,有时候我们也可以看到许多横着的柱状图,那么横着的柱状图在matplotlib中是如何实现的呢?还是一样直接看一段代码:

x = [2000, 2005, 2010, 2015, 2020, 2025, 2030, 2035]
y = [0, 15, 23, 68, 45, 86, 54, 24]
fig = plt.figure()  # 获取画板
ax = fig.add_subplot(111)  # 获取画纸
ax.barh(x, y)
plt.show()


代码很简单,就是把bar方法换成barh方法,而且上面bar能用的其他设置barh一样都可以使用,这段代码就实现了横行柱状图,实现效果如下:


相关文章
|
6天前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
20 2
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】python之人工智能应用篇--代码生成技术
代码生成技术是人工智能与软件工程交叉领域的一项重要技术,它利用机器学习、自然语言处理和其他AI算法自动编写或辅助编写计算机程序代码。这一技术旨在提高编程效率、降低错误率,并帮助非专业开发者快速实现功能。以下是代码生成技术的概述及其典型应用场景。
13 6
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】python之人工智能应用篇——3D生成技术
在Python中,人工智能(AI)与3D生成技术的结合可以体现在多个方面,比如使用AI算法来优化3D模型的生成、通过机器学习来预测3D模型的属性,或者利用深度学习来生成全新的3D内容。然而,直接通过AI生成完整的3D模型(如从文本描述中生成)仍然是一个活跃的研究领域。 3D生成技术是一种通过计算机程序从二维图像或文本描述自动创建三维模型的过程。这一技术在近年来得到了飞速的发展,不仅为游戏、动画和影视行业带来了革命性的变革,还在虚拟现实、增强现实以及工业设计等多个领域展现出了巨大的应用潜力
6 2
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】python之人工智能应用篇--游戏生成技术
游戏生成技术,特别是生成式人工智能(Generative Artificial Intelligence, 简称Generative AI),正逐步革新游戏开发的多个层面,从内容创作到体验设计。这些技术主要利用机器学习、深度学习以及程序化内容生成(Procedural Content Generation, PCG)来自动创造游戏内的各种元素,显著提高了开发效率、丰富了游戏内容并增强了玩家体验。以下是生成式AI在游戏开发中的几个关键应用场景概述
6 2
|
4天前
|
机器学习/深度学习 人工智能 算法
如何使用Scikit-learn在Python中构建一个机器学习分类器
如何使用Scikit-learn在Python中构建一个机器学习分类器
10 3
|
4天前
|
Python
Python MatplotlibDeprecationWarning Matplotlib 3.6 and will be removed two minor releases later
Python MatplotlibDeprecationWarning Matplotlib 3.6 and will be removed two minor releases later
11 3
|
2天前
|
机器学习/深度学习 JSON API
【Python奇迹】FastAPI框架大显神通:一键部署机器学习模型,让数据预测飞跃至Web舞台,震撼开启智能服务新纪元!
【8月更文挑战第16天】在数据驱动的时代,高效部署机器学习模型至关重要。FastAPI凭借其高性能与灵活性,成为搭建模型API的理想选择。本文详述了从环境准备、模型训练到使用FastAPI部署的全过程。首先,确保安装了Python及相关库(fastapi、uvicorn、scikit-learn)。接着,以线性回归为例,构建了一个预测房价的模型。通过定义FastAPI端点,实现了基于房屋大小预测价格的功能,并介绍了如何运行服务器及测试API。最终,用户可通过HTTP请求获取预测结果,极大地提升了模型的实用性和集成性。
11 1
|
5天前
|
数据可视化 数据挖掘 API
Python数据分析:数据可视化(Matplotlib、Seaborn)
数据可视化是数据分析中不可或缺的一部分,通过将数据以图形的方式展示出来,可以更直观地理解数据的分布和趋势。在Python中,Matplotlib和Seaborn是两个非常流行和强大的数据可视化库。本文将详细介绍这两个库的使用方法,并附上一个综合详细的例子。
|
6天前
|
机器学习/深度学习 算法 数据挖掘
机器学习新手也能飞:Python+Scikit-learn让你轻松入门!
在数据驱动的时代,机器学习是推动科技进步和智能化生活的关键。Python以简洁的语法和强大的库支持,成为机器学习的理想语言。Scikit-learn作为Python的开源机器学习库,提供简单易用的API和丰富的算法,降低了学习门槛。通过Python结合Scikit-learn,即使是初学者也能快速上手,如使用鸢尾花数据集进行分类任务,体验从数据预处理到模型训练和评估的全过程,进而探索更多机器学习的可能性。
17 0
|
25天前
|
数据可视化 数据挖掘 Python
数据界的颜值担当!Python数据分析遇上Matplotlib、Seaborn,可视化美出新高度!
【7月更文挑战第24天】在数据科学领域,Python的Matplotlib与Seaborn将数据可视化升华为艺术,提升报告魅力。Matplotlib作为基石,灵活性强,新手友好;代码示例展示正弦波图的绘制与美化技巧。Seaborn针对统计图表,提供直观且美观的图形,如小提琴图,增强数据表达力。两者结合,创造视觉盛宴,如分析电商平台销售数据时,Matplotlib描绘趋势,Seaborn揭示类别差异,共塑洞察力强的作品,使数据可视化成为触动人心的艺术。
40 7