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()
作业练习
编写程序,对分类为流行
的数据进行统计分析,并以柱形图与饼图的形式进行显示分析。