一篇文章掌握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
机器学习特征筛选:向后淘汰法原理与Python实现
向后淘汰法(Backward Elimination)是机器学习中一种重要的特征选择技术,通过系统性地移除对模型贡献较小的特征,以提高模型性能和可解释性。该方法从完整特征集出发,逐步剔除不重要的特征,最终保留最具影响力的变量子集。其优势包括提升模型简洁性和性能,减少过拟合,降低计算复杂度。然而,该方法在高维特征空间中计算成本较高,且可能陷入局部最优解。适用于线性回归、逻辑回归等统计学习模型。
228 7
|
4月前
|
机器学习/深度学习 人工智能 算法
Scikit-learn:Python机器学习的瑞士军刀
想要快速入门机器学习但被复杂算法吓退?本文详解Scikit-learn如何让您无需深厚数学背景也能构建强大AI模型。从数据预处理到模型评估,从垃圾邮件过滤到信用风险评估,通过实用案例和直观图表,带您掌握这把Python机器学习的'瑞士军刀'。无论您是AI新手还是经验丰富的数据科学家,都能从中获取将理论转化为实际应用的关键技巧。了解Scikit-learn与大语言模型的最新集成方式,抢先掌握机器学习的未来发展方向!
698 12
Scikit-learn:Python机器学习的瑞士军刀
|
7月前
|
机器学习/深度学习 数据可视化 算法
Python与机器学习:使用Scikit-learn进行数据建模
本文介绍如何使用Python和Scikit-learn进行机器学习数据建模。首先,通过鸢尾花数据集演示数据准备、可视化和预处理步骤。接着,构建并评估K近邻(KNN)模型,展示超参数调优方法。最后,比较KNN、随机森林和支持向量机(SVM)等模型的性能,帮助读者掌握基础的机器学习建模技巧,并展望未来结合深度学习框架的发展方向。
Python与机器学习:使用Scikit-learn进行数据建模
|
6月前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
6月前
|
机器学习/深度学习 数据可视化 算法
Python 高级编程与实战:深入理解数据科学与机器学习
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化和调试技巧。本文将深入探讨 Python 在数据科学和机器学习中的应用,并通过实战项目帮助你掌握这些技术。
|
10月前
|
机器学习/深度学习 数据可视化 数据处理
掌握Python数据科学基础——从数据处理到机器学习
掌握Python数据科学基础——从数据处理到机器学习
159 0
|
10月前
|
机器学习/深度学习 数据采集 人工智能
机器学习入门:Python与scikit-learn实战
机器学习入门:Python与scikit-learn实战
347 0
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
440 14
|
机器学习/深度学习 算法 数据可视化
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
397 1
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)

推荐镜像

更多