Matplotlib库

什么是数据可视化

如果将文本数据与图表数据相比较,人类的思维模式更适合于理解后者,原因在于图表数据更加直观且形象化,它对于人类视觉的冲击更强,这种使用图表来表示数据的方法被叫做数据可视化。


图表为更好地探索、分析数据提供了一种直观的方法,它对最终分析结果的展示具有重要的作用。

数据可视化是一个新兴名词,它表示用图表的形式对数据进行展示。当您对一个数据集进行分析时,如果使用数据可视化的方式,那么您会很容易地确定数据集的分类模式、缺失数据、离群值等等。下图展示了五个常用的数据可视化图表:


数据可视化主要有以下应用场景:

  • 企业领域:利用直观多样的图表展示数据,从而为企业决策提供支持;
  • 股票走势预测:通过对股票涨跌数据的分析,给股民提供更合理化的建议;
  • 商超产品销售:对客户群体和所购买产品进行数据分析,促使商超制定更好的销售策略;
  • 预测销量:对产品销量的影响因素进行分析,可以预测出产品的销量走势。

什么是Matplotlib库

Matplotlib 是 Python 中最受欢迎的数据可视化软件包之一,支持跨平台运行,它是 Python 常用的 2D 绘图库,同时它也提供了一部分 3D 绘图接口。Matplotlib 通常与 NumPy、Pandas 一起使用,是数据分析中不可或缺的重要工具之一。


Matplotlib.pyplot相关函数

绘图类型

函数名称描述
Bar绘制条形图
Barh绘制水平条形图
Boxplot绘制箱型图
Hist绘制直方图
his2d绘制2D直方图
Pie绘制饼状图
Plot在坐标轴上画线或者标记
Polar绘制极坐标图
Scatter绘制x与y的散点图
Stackplot绘制堆叠图
Stem用来绘制二维离散数据绘制(又称为“火柴图”)
Step绘制阶梯图
Quiver绘制一个二维按箭头

Image函数

函数名称描述
Imread从文件中读取图像的数据并形成数组。
Imsave将数组另存为图像文件。
Imshow在数轴区域内显示图像。

Axis函数

函数名称描述
Axes在画布(Figure)中添加轴
Text向轴添加文本
Title设置当前轴的标题
Xlabel设置x轴标签
Xlim获取或者设置x轴区间大小
Xscale设置x轴缩放比例
Xticks获取或设置x轴刻标和相应标签
Ylabel设置y轴的标签
Ylim获取或设置y轴的区间大小
Yscale设置y轴的缩放比例
Yticks获取或设置y轴的刻标和相应标签

Figure函数

函数名称描述
Figtext在画布上添加文本
Figure创建一个新画布
Show显示数字
Savefig保存当前画布
Close关闭画布窗口

二维线性图像

sin函数图像

from matplotlib import pyplot as plt
import math

x = [i for i in range(1,100,2)]
y = [math.sin(i) for i in x]

plt.plot(x,y)

plt.show()


设置图像标题

from matplotlib import pyplot as plt
import math

plt.rcParams["font.sans-serif"]=\
["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]\
=False #该语句解决图像中的“-”负号的乱码问题

x = [i for i in range(1,100,2)]
y = [math.sin(i) for i in x]


plt.plot(x,y)
plt.xlabel("X数值")
plt.ylabel("Y数值")
plt.title("sin函数图像")

plt.show()


特殊线条绘制

符号'-','--','-.',':','.',',',,o,^,v,<,>,s,+,x,D,d,1,2,3,4,h,H,p,\,_
颜色b(蓝色),g(绿色),r(红色),c(青色),m(品红),y(黄色),k(黑色),w(白色)
from matplotlib import pyplot as plt
import math

x = [i for i in range(1,100,2)]
y = [math.sin(i) for i in x]

plt.plot(x,y,'r--')
plt.xlabel("X数值")
plt.ylabel("Y数值")
plt.title("sin函数图像")

plt.show()


多条图像绘制

from matplotlib import pyplot as plt
import math

x = [i for i in range(1,50,2)]
sin_y = [math.sin(i) for i in x]
cos_y = [math.cos(i) for i in x]

plt.plot(x,sin_y,'r--')
plt.plot(x,cos_y,'g:')

plt.xlabel("X")
plt.ylabel("Y")
plt.title("sin and cos")

plt.show()


其他图像的绘制

柱状图的绘制

from matplotlib import pyplot as plt

langs = ['C','C++','Java','Python','PHP']
students = [23,17,35,29,12]

plt.xlabel("langs")
plt.ylabel("students")
plt.title("sin and cos")

#绘制柱形图
plt.bar(langs,students,color = "g")

plt.show()


饼状图的绘制

from matplotlib import pyplot as plt

langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]

plt.title("Progrom language")

#绘制柱形图
plt.pie(students, labels = langs,autopct='%1.2f%%')

plt.show()


散点图绘制

from matplotlib import pyplot as plt

boys_grades = [30, 29, 49, 48, 100, 48, 38, 45, 20, 30]
girls_grades = [89, 90, 70, 89, 100, 80, 90, 100, 80, 34]


grades_range = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

plt.scatter(grades_range,boys_grades,color = "g",label = "boys")
plt.scatter(grades_range,girls_grades,color = "r",label = "girls")


plt.xlabel("Grades Range")
plt.ylabel("Grades Scored")

plt.show()


豆瓣图书标签分析


定义通用爬虫函数

headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

def getHtml(url):
    try:
        response = requests.get(url,headers = headers)
        if response.status_code == 200:
            return response.text
        else:
            return response.status_code
    except Exception as e:
        return e

获取网页数据

#获取数据,对数据进行分析
html = getHtml("https://book.douban.com/tag/")
tag_data = re.findall('<a href=".*?">(.*?)</a><b>\((.*?)\)</b>',html)

存储数据

#准备容器存储数据
x = []
y = []

#对数据进行存储
for tag,data in tag_data:
    x.append(tag)
    y.append(int(data))

绘制图像

#绘制饼图
plt.pie(y[:10],labels = x[:10],)
plt.show()


作业练习

编写程序,对分类为流行的数据进行统计分析,并以柱形图与饼图的形式进行显示分析。

最后修改:2024 年 06 月 01 日
如果觉得我的文章对你有用,请随意赞赏