当前位置: 首页 > article >正文

python数据分析与可视化工具介绍-matplotlib库

众所周知,python的数据分析库主要是numpy,pandas,和matplotlib,而前面两个主要是数据处理工具库,最后一个才是真正的作图展示工具库。本节来学习一下matploatlib工具库的使用。

Matplotlib常用绘图函数

pyplot简介


matplotlib.pyplot
。matplotlib.pyplot是命令样式函数的集合,使matplotlib像MATLAB一样工作。每个pyplot函数对图形进行一些更改:例如,创建图形,在图形中创建绘图区域,在绘图区域中绘制一些线条,用标签装饰图形等,
导入包:import matplotlib.pyplot as plt.

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

# 如果没有指定横坐标x,则横坐标x会从0开始,自增。(0,1,2,3,4……)
# 如果我们只绘制一个值,该值就是一个点,我们需要指定marker来设置标记,否则该点不可见。
# plt.plot(10, marker="o")
# 绘制多个点。
plt.plot([1, 5, 8, 4, 6], marker=">")
#如果没有指定横坐标x,则横坐标x会从0开始(1,0)(5,1)……
# 显式指定横坐标。
plt.plot([1, 3, 5, 7, 9], [2, 4, 16, 8, 10], marker="o")
#绘制点(1,2)(3,4)……
plt.show()

折线图

# 可以一次性绘制多个图形。

# 格式字符串可以指定标记形状,颜色与线型。

plt.plot([1, 3], [2, 4], "r-o", [5, 8], [10, 2], "g--x")

下图如定义,红色实线圆点以及绿色虚线叉点。

支持中文

# 默认情况下,matplotlib使用的是西方字体(不支持中文的),
# 如果需要显式中文,可以将字体设置成支持中文的字体。"SimHei"——黑体
mpl.rcParams["font.family"] = "SimHei"
plt.plot([1, -2, 3], [5, -10, 6])
plt.title("中文标题")
# 当字体设置成支持中文的字体时,负号也会使用Unicode字符集的负号(不支持显式)。
# 我们需要恢复成ASCII字符集中的负号。当出现负号是正常显示
mpl.rcParams["axes.unicode_minus"]=False
# 设置字体的大小。
mpl.rcParams["font.size"] = 20

设置标签

last_year = np.random.randint(400, 500, 12)#此处为随机输出,结果可能不同
this_year = np.random.randint(400, 500, 12)
# plt.plot(range(1, 13), last_year, marker="o")
# plt.plot(range(1, 13), this_year, marker="o")
# 设置图例 1 在legend方法中,按顺序指定每次绘图的标签。
# plt.legend(["2017", "2018"])
# 2 在绘制(plot)图形时,指定label参数值,该参数值为图例需要显示的文本。
#range(1,13)左闭右开,可以取1,不可取13。
plt.plot(range(1, 13), last_year, marker="o", label="2017")
plt.plot(range(1, 13), this_year, marker="o", label="2018")

plt.plot(range(1, 13), last_year, marker="o", label="2017")

plt.plot(range(1, 13), this_year, marker="o", label="2018")

# 设置图例时,可以通过loc属性来设置图例显示的位置。如果没有显式指定,则参数值为右上角。

# loc属性可以指定为字符串,整数值。或者是一个元组(两个float值指定比例)此时,会根据图像比例计算

# loc=1表示显示在右上

# frameon参数用来设置图例是否显示边框。默认为True。

# title设置图例显示的标题。

# ncol参数用来设置图例显示的列数。(默认为1。)

plt.legend(loc=1, title="图例标题", ncol=2)

# ncol参数用来设置图例显示的列数。(默认为1。)

 

子图


matplotlib.pyplot.subplot(numRows, numCols, plotNum)

。图表的整个绘图区域被分成numRows行和numCols列;

。按照从左到右,从上到下的顺序对每个子区域进行编号;

。plotNum:编号,指定创建的 Axes 对象所在的区域。

matplotlib.pyplot.subplots(nrows=1,ncols=1,**fig_kw):创建一个带有多个axes(坐标系/绘图区)的图。
。图表的整个绘图区域被分成nrows行和ncols列。
。改方法返回画布对象和一个子图组成的列表。
。操作子图时可以使用列表下标的形式。

# 创建Figure对象,然后通过调用add_subplot增加绘图区域。
# 创建Figure对象。(画图必备的底层对象)
f = plt.figure()
# 调用add_subplot增加子绘图区域对象,返回AxesSubplot类型的对象。
# 三个参数,行数,列数,当前的绘图区域
ax = f.add_subplot(1, 2, 1)
# 调用AxesSubplot对象的plot方法,进行图形绘制。
# ax.plot([1, 5, 8], [10, -3, 6])
plt.plot([1, 5, 8], [10, -3, 6])
# ax = f.add_subplot(1, 2, 2)
ax = f.add_subplot(122, facecolor="g")
#云平台”122”加了引号,作为字符串可以,其实是(1,2,2)1行,2列,第2个为绿色。本地平台不加引号(1,2,2)或(122)
# ax.plot([10, 15, 28], [1, -33, 26])
plt.plot([10, 15, 28], [1, -33, 26])

# 我们可以使用plt或者是AxesSubplot对象,调用plot方法进行绘制。
# 当我们使用plt绘制时,永远会在最后一次创建的子绘图区域上进行绘制。
# 如果当前没有子绘图区域,此时会创建一个。

# 调整距离(绘图区域之间的距离以及绘图区域与边界间的距离)
plt.subplots_adjust(wspace=0.5)

 

柱形图 / 条形图

plt.bar 柱形图
plt.barh 条形图

输入:

# 柱形图,条形图适合比较数值的大小。

plt.bar(range(1, 11), np.random.randint(100, 200, 10))

# plt.barh(range(1, 11), np.random.randint(100, 200, 10))

plt.pie 饼图

输入:

# 饼图适合于表示比例大小。(数量不宜过多,否则会显得凌乱)

plt.pie([10, 20, 30, 40], labels=["A部门", "B部门", "C部门", "D部门"], explode=[0, 0, 0, 0.5], colors=["r", "g", "b", "y"],  autopct="%.2f", counterclock=False, startangle=90, shadow=True)

散点图 / 气泡图

散点图适合于用来显示与比较数据的分布状态。

  • marker 点的标记。
  • s 点的大小。
  • color 点的颜色。

color与s参数可以统一设置,也可以为每一个点单独设置。

输入:

# 散点图/气泡图适合表示数据整体的分布信息。

# 散点图可以表示两个维度,加上气泡大小,颜色,可以多表示两个维度。

# s(点的大小)与color(点的颜色)既可以统一制定,也可以单独制定。

size = [10, 20, 30, 40]

color = ["r", "g", "b", "y"]

plt.scatter(np.random.randint(0, 100, 100), np.random.randint(0, 100, 100),

            s=np.random.choice(size, 100), color=np.random.choice(color, 100))

直方图

直方图(histogram)可以看成是一种特殊的柱形图,用来将连续的数据频率(数量)进行离散化显示。在直方图中,数据被分割成若干区间,然后统计每个区间数据出现的频率(数量)。
我们可以通过plt.hist来绘制直方图。

  • bins:设置分割区间的数量。
  • normed:进行归一化显示。(概率密度)

输入:

# 直方图适合将连续值转换成离散值,方便分组统计数量。

plt.hist(np.random.randn(100), bins=10, normed=True)

# 返回的两个ndarray。

# 第一个ndarray表示每个桶中元素的数量。

# 第二个naarray表示每个桶的界限。(前闭后开,最后一个桶例外,两端都是闭区间。)

箱线图

箱线图也称盒须图。通过极值与Q1,Q2,Q3值来描述数据。通过箱线图,我们可以发现数据中的离群(异常)值。 箱线图的离群点定义为:Q3+1.5IQR和Q1-1.5IQR。其中IQR为两个四分位之间的距离。

输入:

# 箱线图适合分析离群值(异常值)。

x = np.random.normal(0, 10, size=1000)

plt.boxplot(x)

总结

Python语言有着无可比拟的简单性和灵活性,结合Matplotlib库,Python能够高效地进行数据分析并生成丰富多样的图表。利用简单代码的特性,我们能够快速呈现数据洞察,极大地提升了人工智能数据分析的效率。无论是折线图、柱状图还是散点图,Python都能够轻松实现,为数据分析师提供了无限的创造性展示方式。因此,Python及其可视化工具在数据科学领域的应用,显然为我们带来了巨大的便利和价值。


http://www.kler.cn/news/336892.html

相关文章:

  • Python入门--判断语句
  • c++包管理工具conan
  • 图论day55|深度优先搜索理论基础、98. 所有可达路径(卡码网)
  • 新课发布|鸿蒙HarmonyOS Next商城APP应用开发实战
  • 【Java数据结构】栈 (Stack)
  • 从建国时期影视剧看老式自行车先滑行再上车的编程关联
  • 【k8s深入理解之csi插件】理解存储 csi 插件的总体逻辑框架
  • LLM端侧部署系列 | 手机上运行47B大模型?上交推理框架PowerInfer-2助力AI手机端侧部署
  • 寻找排名好的自闭症学校?这些关键因素不可忽视
  • 回溯算法:一个模板解决排列组合问题
  • BMC pam认证的使用
  • 基于SSM的仿win10界面的酒店管理系统
  • 系统架构设计师-下午案例题(2018年下半年)
  • Qt_QSS介绍与使用
  • 大数据毕设方向怎么做
  • 【pytorch】张量求导4
  • [Day 85] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • 【GESP】C++一级练习BCQM3029,选择合适的数据类型
  • Leetcode—152. 乘积最大子数组【中等】
  • Linux基础入门 --13 DAY(SHELL脚本编程基础)