matplotlib数据可视化图表
第21章 matplotlib数据可视化开发
Matplotlib是Python的一个数据可视化工具包,可以方便地绘制数据统计相关的图表,如折线图、散点图、直方图等,强大的绘图功能使Python广泛用于数据挖掘领域。
21.1 环境搭建
- 使用pip工具安装模块:
pip install matplotlib - 安装前需确保Windows系统上已安装visual studio .NET 运行库。
21.2 实现简单绘图
matplotlib有两大子模块,pyplot包含了绘制各种图表的工具,pylab包含了绘制数学曲线工具。
-
绘制散点scatter()
import matplotlib.pyplot as plt # 定义样本点横坐标、纵坐标的列表 xset = [60,85.5,49.2,47.4] yset = [18.4,16.8,17.6,16.4] # 使用scatter()方法绘制散点,可设为红色 plt.scatter(xset,yset,c='r') # 可以定义坐标轴的范围 plt.axis([0,90,0,20]) # 展示图表 plt.show() -
绘制折线plot()
import matplotlib.pyplot as plt # 定义样本点纵坐标的列表 xset = [0,1,2,3,4,5,6] yset = [0,1,4,9,16,25,36] set = [0,0.5,2,4.5,8,12.5,18] # 使用plot()方法绘制折线 plt.plot(xset,yset,c='r') # 当没有指定横坐标时,默认序列的下标作为横坐标 plt.plot(set,c='b') # 展示图表 plt.show() -
设置标签和线条样式(注意,默认的字体库不显示中文)
import matplotlib.pyplot as plt import matplotlib as mpl xset = [0,1,2,3,4,5,6] yset = [0,1,4,9,16,25,36] plt.plot(xset,yset,c='r',linewidth='5') # 模块的全局对象,导入字体库设置字体 mpl.rcParams["font.sans-serif"] = ["SimHei"] # 设置图表的标签说明 plt.title("示例图表",fontsize=24) plt.xlabel("横坐标",fontsize=14) plt.ylabel("纵坐标",fontsize=14) # 设置刻度的样式 plt.tick_params(axis='both',labelsize=14) # 可以本地保存为图片 plt.savefig("示例图表.png",bbox_inches='tight') # 第二个参数设置边缘空白。 # 展示图表 plt.show() -
柱形图bar()
-
原始的简单柱形图
import matplotlib.pyplot as plt import matplotlib as mpl # 设置图表标签 mpl.rcParams["font.sans-serif"] = ["SimHei"] plt.title("班级人数图") plt.xlabel("班级") plt.ylabel("人数") # 绘制多个柱形,参数表:x坐标、高度、宽度、校准(默认为center) plt.bar(x=(1,2,3,4),height=(45,50,40,55),width=0.4,align="edge") plt.show() -
详细标签说明的柱形图
import matplotlib.pyplot as plt import matplotlib as mpl # 设置图表标签 mpl.rcParams["font.sans-serif"] = ["SimHei"] plt.title("专业人数图") plt.xlabel("专业") plt.ylabel("人数") plt.xticks((1,2,3,4),("计算机","机械","会计","日语")) plt.ylim(0,60) # 绘制多个柱形,参数表:x坐标、高度、宽度、校准(默认为center) rectangles = plt.bar(x=(1,2,3,4),height=(45,50,40,55),width=0.4) # 可以用text()为柱形添加数值标注 for rect in rectangles: height = rect.get_height() plt.text(x=rect.get_x(), # x坐标 y=height+1.5, # y坐标 s="%s" % (height), # 标注内容 fontsize=15, # 字体大小 color="r", # 字体颜色 backgroundcolor="y", # 背景颜色 horizontalalignment="left", # 水平对齐 verticalalignment="bottom", # 竖直对齐 rotation=30, # 旋转 alpha=0.4) # 透明度(0到1之间) plt.show()
-
-
绘制多幅子图
-
实际上,matplotlib中调用plot()函数时,会首先调用gca()和gcf()两个函数来获取当前的坐标轴和图像,如果没有图像,则会用figure()函数创建一个,所以我们可以直接用figure()创建绘画框,再用subplot()函数创建子图。
import matplotlib.pyplot as plt # 创建一个绘图框 fig = plt.figure() # 在绘图框中创建两个子图p1、p2,参数表:多少行、多少列、第几幅,默认(1,1,1) p1 = fig.add_subplot(2,1,1) p2 = fig.add_subplot(2,1,2) # 绘制两个子图 xset = [1,2,3,4,5,6,7,8] yset = [2,1,3,5,2,6,12,7] p1.plot(xset,yset,c='b') p2.scatter(xset,yset,c="r") plt.show()
-
-
绘制曲线
import matplotlib.pyplot as plt import matplotlib.pylab as lab # 设置定义域的范围(-pi到pi)的列表,参数表:起始值,结束值,样本数(样条曲线)。 X = lab.np.linspace(start=-lab.np.pi,stop=lab.np.pi,num=256) # 使用数学函数设置值域的列表 C, S = lab.np.cos(X), lab.np.sin(X) # 绘制曲线 plt.plot(X,C) plt.plot(X,S) plt.xticks((-3.14,-1.57,0,1.57,3.14),("-pi","-pi/2","0","pi/2","pi")) plt.show()
21.3 大数据分析的示例
-
【.csv】文件是一种保存大数据的文件,Python可以调用 csv模块解析这种文件。
import csv import matplotlib as mpl import matplotlib.pyplot as plt from datetime import datetime # 定义数据集:日期、高温、低温 dateSet, highSet, lowSet = [],[],[] # 打开一个本地的.csv文件 with open("./death_valley_2014.csv") as file: read = csv.reader(file) header = next(read) # 遍历每一行,并将相应数值添加到数据集。 for row in read: try: date = datetime.strptime(row[0],"%Y-%m-%d") # 按格式解析出日期。 high = int(row[1]) low = int(row[3]) except ValueError: print(date, "missing message") else: dateSet.append(date) highSet.append(high) lowSet.append(low) # 用数据集绘制图形 plt.plot(dateSet,highSet,c='r',alpha=0.3) plt.plot(dateSet,lowSet,c='b',alpha=0.3) plt.fill_between(dateSet,highSet,lowSet,facecolor='b',alpha=0.2) # 设置图表样式 mpl.rcParams["font.sans-serif"] = ["SimHei"] plt.title("2014温度变化图") plt.xlabel("月份",fontsize=12) plt.ylabel("摄氏度",fontsize=12) plt.tick_params(axis="both",which="major",labelsize=20) plt.tick_params(axis="x",which="major",labelsize=12,rotation=30) plt.show()

浙公网安备 33010602011771号