Matplotlib之绘制精美的图表PPT(82张)
Python数据可视化之美:专业图表绘制指南(全彩)PPT模板

03
3数据可视化基础
3数据可视化基础
3.1matplotlib 3.2seaborn 3.3plotnine 3.4可视化色彩的运用原理 3.5图表的基本类型 3.2Seaborn 3.3plotnine 3.4可视化色彩的运用原理
04
4类别比较型图表
4类别比 较型图表
4.1柱形 图系列
4.4克利 夫兰点图
4.2条形 图系列
4.5坡 度图
4.3不等 宽柱形图
4.6南丁 格尔玫瑰
图
4类别比较型图表
4.7径向柱图 4.8雷达图 4.9词云图
05
5数据关系型图表
06
5.6相关系 数图
01
5.1散点图 系列
05
5.5瀑布图
02
5.2曲面拟 合
04
5.4散点曲 线图系列
03
5.3等高线 图
5数据关系型图 表
02
10.2分级统 计地图
04
10.4带柱形 的地图
03
10.3点描法 地图
10地理空间型图 表
10.7简化示意图 10.8邮标法
11
11数据可视化案例
11数据可视化案 例
11.1商业图表绘制示例 11.2学术图表绘制示例 11.3数据分析与可视化案例 11.4动态数据可视化演示
2
0
2
0
感谢聆听
09
9高维数据型图表
9高维数 据型图表
0 1
9.1高维数据 的变换展示
0 4
9.4热力图
0 2
9.2分面图
0 5
9.5平行坐标 系图
0 3
9.3矩阵散点 图
0 6
9.6radviz图
Python数据可视化进阶——使用Matplotlib和Bokeh进行高级图表制作

Python数据可视化进阶——使用Matplotlib和Bokeh进行高级图表制作在数据处理和分析的过程中,数据可视化是一项非常关键且广泛使用的工具。
通过数据可视化,我们可以通过图表直观地了解数据的特征、趋势和模式等信息。
在Python中,有许多数据可视化工具可供选择,如Matplotlib、Seaborn、Plotly、Bokeh等等。
本篇文章主要介绍如何使用Matplotlib和Bokeh进行高级图表制作。
一、Matplotlib1. 简介Matplotlib是Python中最常用的数据可视化工具之一,可以绘制各种类型的图表,如折线图、柱状图、散点图、饼图、热力图等等。
Matplotlib 的核心处理模块pyplot提供了类似于MATLAB的接口,非常方便易用。
2. 折线图折线图是一种用线段将数据点连接起来的图表形式,通常用于表示时间序列数据的趋势。
下面是一个简单的折线图的代码示例:```pythonimport matplotlib.pyplot as plt# 准备数据x = [1, 2, 3, 4, 5]y = [1, 3, 2, 4, 5]# 绘制折线图plt.plot(x, y, marker='o')# 设置图表标题、坐标轴标签plt.title('Line Chart')plt.xlabel('X-axis')plt.ylabel('Y-axis')# 显示图表plt.show()```3. 散点图散点图是一种用坐标系表示两个变量之间关系的图表形式,通常用于探究变量间的关联性。
下面是一个简单的散点图的代码示例:```pythonimport matplotlib.pyplot as plt# 准备数据x = [1, 2, 3, 4, 5]y = [1, 3, 2, 4, 5]# 绘制散点图plt.scatter(x, y, color='red')# 设置图表标题、坐标轴标签plt.title('Scatter Plot')plt.xlabel('X-axis')plt.ylabel('Y-axis')# 显示图表plt.show()```4. 柱状图柱状图是一种用矩形表示数据大小的图表形式。
Python数据可视化教程之Matplotlib实现各种图表实例

Python数据可视化教程之Matplotlib实现各种图表实例前⾔数据分析就是将数据以各种图表的形式展现给领导,供领导做决策⽤,因此熟练掌握饼图、柱状图、线图等图表制作是⼀个数据分析师必备的技能。
Python有两个⽐较出⾊的图表制作框架,分别是Matplotlib和Pyechart。
本⽂主要讲述使⽤Matplotlib制作各种数据图表。
Matplotlib是最流⾏的⽤于绘制2D数据图表的Python库,能够在各种平台上使⽤,可以绘制散点图、柱状图、饼图等。
1、柱状图是⼀种以长⽅形或长⽅体的⾼度为变量的表达图形的统计报告图,由⼀系列⾼度不等的纵向条纹表⽰数据分布的情况,⽤来⽐较两个或以上的价值(不同时间或者不同条件),只有⼀个变量,通常利⽤于较⼩的数据集分析。
柱状图可以⽤来⽐较数据之间的多少,可以⽤来观察某⼀事件的变化趋势,柱状图亦可横向排列,或⽤多维⽅式表达。
实现代码:# 导⼊绘图模块import matplotlib.pyplot as plt# 构建数据sales = [7125,12753,13143,8635]# 中⽂乱码的处理,rcParams也可以⽤于设置图的分辨率,⼤⼩等信息plt.rcParams['font.sans-serif'] =['SimHei']plt.rcParams['axes.unicode_minus'] = False# 绘图,第⼀个参数是x轴的数据,第⼆个参数是y轴的数据,第三个参数是柱⼦的⼤⼩,默认值是1(值在0到1之间),color是柱⼦的颜⾊,alpha是柱⼦的透明度plt.bar(range(4), sales, 0.4,color='r', alpha = 0.8)# 添加轴标签plt.ylabel('销量')# 添加标题plt.title('⽔果2018年度销量')# 添加刻度标签plt.xticks(range(4),['苹果','⾹蕉','梨','猕猴桃'])# 设置Y轴的刻度范围plt.ylim([5000,15000])# 为每个条形图添加数值标签for x,y in enumerate(sales):plt.text(x,y+100,'%s' %y,ha='center')# 显⽰图形plt.show()效果图:只需绘制柱状图的函数bar()改成barh()就可以将柱状图长⽅形或长⽅体从垂直⽅向变为⽔平⽅向。
Matplotlib之绘制精美的图表(PPT82页)

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 1000) y = np.sin(x) z = np.cos(x**2)
plt.figure(figsize=(8,4)) plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2) plt.plot(x,z,"b--",label="$cos(x^2)$") plt.xlabel("Time(s)") plt.ylabel("Volt") plt.title("PyPlot First Example") plt.ylim(-1.2,1.2) plt.legend() plt.show()
Matplotlib之绘制精美的图表(PPT82页)
8
Matplotlib之绘制精美的图表(PPT82页)
快速绘图
接下来通过一系列函数设置绘图对象的各 个属性: plt.xlabel("Time(s)")
plt.ylabel("Volt") plt.title("PyPlot First Example") plt.ylim(-1.2,1.2) plt.legend()
Matplotlib之绘制精美的图表(PPT82页)
10
Matplotlib之绘制精美的图表(PPT82页)
快速绘图
Matplotlib之绘制精美的图表(PPT82页)
11
Matplotlib之绘制精美的图表(PPT82页)
高教社2024Python数据可视化教学课件05章Matplotlib绘图高阶设置

二、刻度标签和刻度线个性化设置
画布上的任何内容都是一个Artist对象,可以获取这些对象做进一步设置。下面绘制一条余弦曲线,然后获 取x轴的刻度标签和刻度线进行设置,这样可实现灵活的个性化设置,具体代码如下:
plt.figure(facecolor='pink')
x = np.linspace(-5,5,50)
以利用双Y轴图形实现。双Y轴图形由两个共享x轴的彼此重叠的子图构成,代码如下:
fig, ax1 = plt.subplots()
t = np.arange(0.05, 10.0, 0.01)
s1 = np.exp(t)
# 指数函数
ax1.plot(t, s1, c="b", ls="-", lw=3) # 在ax1绘制指数函数,蓝色
plt.plot(a, np.sin(2*np.pi*a), 'r-.') plt.xlabel('横轴:时间', fontproperties='SimHei', fontsize=18)
# 黑体
plt.ylabel('纵轴:振幅', fontproperties='Simsun', labelpad=5, fontsize=18) # 宋体
# 设置x轴范围
plt.ylim(-6, 6)
# 设置y轴范围
plt.title('图2指定轴范围为6', fontsize=16)
ax3 = fig.add_subplot(133)
plt.plot(x, y, color='m')
plt.axis([-1, 1, -1, 1])
python数据分析——用matplotlib绘制饼状图 课件 高中信息技术选修3

THANK YOU
主讲人:XXX
Python——Matplotlib
绘制 饼状图
2 出行方式统计表
交通方式
出租车taxi 地铁subway
步行walk 公交车bus 自行车bicycle 驾车drive
人数
100 300 50 250 50 250
3 数据可视化 可视化含义
可视化意义
可视化TI功TL能E HERE
通过图形化表示来探索数据 清晰明了的传递数据隐含的信息
图形展示
12 绘制饼状图——explode突出显示
plt.pie(
= explode) : 突出强调
参数值以列表或元组的形式进行定义
参数值
偏移值
偏移值范围为[0,1],默认为0,即扇面不偏移
注意:在选取偏移数值和偏移距离时要适中
13 绘制饼状图——explode突出显示
代码展示
import matplotlib.pyplot as plt labels = ['taxi','subway','walk','bus','bicycle','drive'] values = [100,300,50,250,50,250] explode=[0.3,0.1,0,0,0,0] plt.pie(values,labels=labels) ,explode=explode plt.axis('equal') plt.show()
通过引人注目的简洁方式呈现数据 让观看者在最快的时间内明白其中含义 洞悉蕴含在数据中的现象和规律
信息 • 针对多个项目进行比较分 析,强调数量增减变化 • 反映变化量的时间序列数 据
图表绘制库matplotlib_基本图表绘制

图表类别:线形图、柱状图、密度图,以横纵坐标两个维度为主同时可延展出多种其他图表样式plt.plot(kind='line', ax=None, figsize=None, use_index=True, title=None, grid=None, legend=False, style=None, logx=False, logy=False, loglog=False, xticks=None, yticks=None, xlim=None, ylim=None, rot=None,fontsize=None, colormap=None, table=False, yerr=None, xerr=None, label=None, secondary_y=False, **kwds)In [1]:import numpy as npimport pandas as pdimport matplotlib.pyplot as plt% matplotlib inline# 导入相关模块import warningswarnings.filterwarnings('ignore')# 不发出警告In [2]:Out[2]:<matplotlib.legend.Legend at 0x2a6186ec940># Series 直接生成图表ts = pd.Series(np.random.randn(1000), index =pd.date_range('1/1/2000', periods =1000))ts = ts.cumsum()ts.plot(kind ='line',label = 'hehe',style = '--g.',color = 'red',alpha = 0.4,use_index = True ,rot = 45,grid = True ,ylim = [-50,50],yticks = list (range (-50,50,10)),figsize = (8,4),title = 'test',legend = True )#plt.grid(True, linestyle = "--",color = "gray", linewidth = "0.5",axis = 'x') # 网格plt.legend()# Series.plot():series 的index 为横坐标,value 为纵坐标# kind → line,bar,barh...(折线图,柱状图,柱状图-横...)# label → 图例标签,Dataframe 格式以列名为label # style → 风格字符串,这里包括了linestyle (-),marker (.),color (g )# color → 颜色,有color 指定时候,以color 颜色为准# alpha → 透明度,0-1# use_index → 将索引用为刻度标签,默认为True # rot → 旋转刻度标签,0-360# grid → 显示网格,一般直接用plt.grid # xlim,ylim → x,y 轴界限# xticks,yticks → x,y 轴刻度值# figsize → 图像大小# title → 图名# legend → 是否显示图例,一般直接用plt.legend()# 也可以 → plt.plot()In [3]:Out[3]:<matplotlib.axes._subplots.AxesSubplot at 0x2a61887e7f0># Dataframe 直接生成图表df = pd.DataFrame(np.random.randn(1000, 4), index =ts.index, columns =list ('ABCD'))df = df.cumsum()df.plot(kind ='line',style = '--.',alpha = 0.4,use_index = True ,rot = 45,grid = True ,figsize = (8,4),title = 'test',legend = True ,subplots = False ,colormap = 'Greens')# subplots → 是否将各个列绘制到不同图表,默认False # 也可以 → plt.plot(df)Out[4]:<matplotlib.axes._subplots.AxesSubplot at 0x2a618f86780># 柱状图与堆叠图fig,axes = plt.subplots(4,1,figsize = (10,10))s = pd.Series(np.random.randint(0,10,16),index = list ('abcdefghijklmnop'))df = pd.DataFrame(np.random.rand(10,3), columns =['a','b','c'])s.plot(kind ='bar',color = 'k',grid = True ,alpha = 0.5,ax = axes[0]) # ax 参数 → 选择第几个子图# 单系列柱状图方法一:plt.plot(kind='bar/barh')df.plot(kind ='bar',ax = axes[1],grid = True ,colormap ='Reds_r')# 多系列柱状图df.plot(kind ='bar',ax = axes[2],grid = True ,colormap ='Blues_r',stacked =True )# 多系列堆叠图# stacked → 堆叠df.plot.barh(ax = axes[3],grid = True ,stacked =True ,colormap = 'BuGn_r')# 新版本plt.plot.<kind># 柱状图 plt.bar()plt.figure(figsize=(10,4))x = np.arange(10)y1 = np.random.rand(10)y2 =-np.random.rand(10)plt.bar(x,y1,width =1,facecolor ='yellowgreen',edgecolor ='white',yerr = y1*0.1)plt.bar(x,y2,width =1,facecolor ='lightskyblue',edgecolor ='white',yerr = y2*0.1)# x,y参数:x,y值# width:宽度比例# facecolor柱状图里填充的颜色、edgecolor是边框的颜色# left-每个柱x轴左边界,bottom-每个柱y轴下边界→ bottom扩展即可化为甘特图 Gantt Chart# align:决定整个bar图分布,默认left表示默认从左边界开始绘制,center会将图绘制在中间位置# xerr/yerr :x/y方向error barfor i,j in zip(x,y1):plt.text(i+0.3,j-0.15,'%.2f'% j, color ='white')for i,j in zip(x,y2):plt.text(i+0.3,j+0.05,'%.2f'%-j, color ='white')# 给图添加text# zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的Out[6]:<matplotlib.axes._subplots.AxesSubplot at 0x2a61a397860>fig,axes = plt.subplots(2,1,figsize = (8,6))df1 = pd.DataFrame(np.random.rand(10, 4), columns =['a', 'b', 'c', 'd'])df2 = pd.DataFrame(np.random.randn(10, 4), columns =['a', 'b', 'c', 'd'])df1.plot.area(colormap = 'Greens_r',alpha = 0.5,ax = axes[0])df2.plot.area(stacked =False ,colormap = 'Set2',alpha = 0.5,ax = axes[1])# 使用Series.plot.area()和DataFrame.plot.area()创建面积图# stacked :是否堆叠,默认情况下,区域图被堆叠# 为了产生堆积面积图,每列必须是正值或全部负值!# 当数据有NaN 时候,自动填充0,所以图标签需要清洗掉缺失值fig,axes = plt.subplots(2,1,figsize = (8,6))x = np.linspace(0, 1, 500)y1 = np.sin(4* np.pi * x) * np.exp(-5* x)y2 =-np.sin(4* np.pi * x) * np.exp(-5* x)axes[0].fill(x, y1, 'r',alpha=0.5,label='y1')axes[0].fill(x, y2, 'g',alpha=0.5,label='y2')# 对函数与坐标轴之间的区域进行填充,使用fill函数# 也可写成:plt.fill(x, y1, 'r',x, y2, 'g',alpha=0.5)x = np.linspace(0, 5* np.pi, 1000)y1 = np.sin(x)y2 = np.sin(2* x)axes[1].fill_between(x, y1, y2, color ='b',alpha=0.5,label='area') # 填充两个函数之间的区域,使用fill_between函数for i in range(2):axes[i].legend()axes[i].grid()# 添加图例、格网a 2.642335b 0.684839c 1.149305d 2.807174Name: series, dtype: float64# 饼图 plt.pie()# plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, la # radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, hold=s = pd.Series(3 * np.random.rand(4), index =['a', 'b', 'c', 'd'], name ='series')plt.axis('equal') # 保证长宽相等plt.pie(s,explode = [0.1,0,0,0],labels = s.index,colors =['r', 'g', 'b', 'c'],autopct ='%.2f%%',pctdistance =0.6,labeldistance = 1.2,shadow = True ,startangle =0,radius =1.5,frame =False )print (s)# 第一个参数:数据# explode :指定每部分的偏移量# labels :标签# colors :颜色# autopct :饼图上的数据标签显示方式# pctdistance :每个饼切片的中心和通过autopct 生成的文本开始之间的比例# labeldistance :被画饼标记的直径,默认值:1.1# shadow :阴影# startangle :开始角度# radius :半径# frame :图框# counterclock :指定指针方向,顺时针或者逆时针In [9]:Out[9]:<matplotlib.axes._subplots.AxesSubplot at 0x2a61aac7198># 直方图+密度图s = pd.Series(np.random.randn(1000))s.hist(bins = 20,histtype = 'bar',align = 'mid',orientation = 'vertical',alpha =0.5,normed =True )# bin :箱子的宽度# normed 标准化# histtype 风格,bar ,barstacked ,step ,stepfilled # orientation 水平还是垂直{‘horizontal’, ‘vertical’}# align : {‘left’, ‘mid’, ‘right’}, optional(对齐方式)s.plot(kind ='kde',style ='k--')# 密度图In [10]:Out[10]:array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61B3E3EF0>,<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61B555C18>],[<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61B59ED68>,<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61B5DF6A0>]],dtype=object)<matplotlib.figure.Figure at 0x2a618ccae10># 堆叠直方图plt.figure(num =1)df = pd.DataFrame({'a': np.random.randn(1000) + 1, 'b': np.random.randn(1000),'c': np.random.randn(1000) - 1, 'd': np.random.randn(1000)-2},columns =['a', 'b', 'c','d'])df.plot.hist(stacked =True ,bins =20,colormap ='Greens_r',alpha =0.5,grid =True )# 使用DataFrame.plot.hist()和Series.plot.hist()方法绘制# stacked :是否堆叠df.hist(bins =50)# 生成多个直方图# plt.scatter()散点图# plt.scatter(x, y, s=20, c=None, marker='o', cmap=None, norm=None, vmin=None, vmax=None, # alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)plt.figure(figsize=(8,6))x = np.random.randn(1000)y = np.random.randn(1000)plt.scatter(x,y,marker='.',s = np.random.randn(1000)*100,cmap ='Reds',c = y,alpha =0.8,)plt.grid()# s:散点的大小# c:散点的颜色# vmin,vmax:亮度设置,标量# cmap:colormapOut[12]:array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61B496E10>,<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61C9FD550>,<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CA45F28>,<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CA80BE0>],[<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CACAE10>,<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CB06BA8>,<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CB4ECF8>,<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CB5EFD0>],[<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CD5E4E0>,<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CDA9438>,<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CDE7240>,<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CE32C18>],[<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CE6E2E8>,<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CEBBA58>,<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CEF9128>,<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61CF42278>]],dtype=object)# pd.scatter_matrix()散点矩阵# pd.scatter_matrix(frame, alpha=0.5, figsize=None, ax=None, # grid=False, diagonal='hist', marker='.', density_kwds=None, hist_kwds=None, range_padding=0.05, **df = pd.DataFrame(np.random.randn(100,4),columns = ['a','b','c','d'])pd.scatter_matrix(df,figsize =(10,6),marker = 'o',diagonal ='kde',alpha = 0.5,range_padding =0.1)# diagonal :({‘hist’, ‘kde’}),必须且只能在{‘hist’, ‘kde’}中选择1个 → 每个指标的频率图# range_padding :(float, 可选),图像在x 轴、y 轴原点附近的留白(padding),该值越大,留白距离越大,图像远Out[13]:<matplotlib.axes._subplots.AxesSubplot at 0x2a61b452978>fig,axes = plt.subplots(2,1,figsize =(10,6))df = pd.DataFrame(np.random.rand(10, 5), columns =['A', 'B', 'C', 'D', 'E'])color = dict (boxes ='DarkGreen', whiskers ='DarkOrange', medians ='DarkBlue', caps ='Gray')# 箱型图着色# boxes → 箱线# whiskers → 分位数与error bar 横线之间竖线的颜色# medians → 中位数线颜色# caps → error bar 横线颜色df.plot.box(ylim =[0,1.2],grid = True ,color = color,ax = axes[0])# color :样式填充df.plot.box(vert =False ,positions =[1, 4, 5, 6, 8],ax = axes[1],grid = True ,color = color)# vert :是否垂直,默认True # position :箱型图占位{'boxes': [<matplotlib.patches.PathPatch object at 0x000002A61CBCBA20>, <matplotlib.patches.PathPatch object at 0x000002A61CBDCA90>, <matplotlib.patches.PathPatch object at 0x000002A61CBF1940>, <matplotlib.patches.PathPatch object at 0x000002A61CC098D0>, <matplotlib.patches.PathPatch object at 0x000002A61CC1F860>], 'means': [<matplotlib.lines.Line2D object at 0x000002A61CBD44A8>, <matplotlib.lines.Line2D object at 0x000002A61CBEC390>, <matplotlib.lines.Line2D object at 0x000002A61CC03320>, <matplotlib.lines.Line2D object at 0x000002A61CC192B0>, <matplotlib.lines.Line2D object at 0x000002A61CB92438>], 'medians': [<matplotlib.lines.Line2D object at 0x000002A61CBC3EF0>, <matplotlib.lines.Line2D object at 0x000002A61CBE6B38>, <matplotlib.lines.Line2Dobject at 0x000002A61CBFEAC8>, <matplotlib.lines.Line2D object at 0x000002A61CC14A58>, <matplotlib.lines.Line2D object at 0x000002A61CB96470>], 'caps': [<matplotlib.lines.Line2D object at 0x000002A61CBCEBE0>, <matplotlib.lines.Line2D object at 0x000002A61CBCECF8>, <matplotlib.lines.Line2D object at 0x000002A61CBE2AC8>, <matplotlib.lines.Line2D object at 0x000002A61CBE69B0>, <matplotlib.lines.Line2D object at 0x000002A61CBF7A58>, <matplotlib.lines.Line2D object at 0x000002A61CBFE940>, <matplotlib.lines.Line2D object at 0x000002A61CC0DF98>, <matplotlib.lines.Line2D object at 0x000002# pltboxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artis # usermedians=None, conf_intervals=None, meanline=None, showmeans=None, showcaps=None, showbox=None,# labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, # zorder=None, hold=None, data=None)df = pd.DataFrame(np.random.rand(10, 5), columns =['A', 'B', 'C', 'D', 'E'])plt.figure(figsize =(10,4))# 创建图表、数据f = df.boxplot(sym = 'o', # 异常点形状,参考markervert = True , # 是否垂直whis = 1.5, # IQR ,默认1.5,也可以设置区间比如[5,95],代表强制上下边缘为数据95%和5%位 patch_artist = True , # 上下四分位框内是否填充,True 为填充meanline = False ,showmeans =True , # 是否有均值线及其形状showbox = True , # 是否显示箱线showcaps = True , # 是否显示边缘线showfliers = True , # 是否显示异常值notch = False , # 中间箱体是否缺口return_type ='dict' # 返回类型为字典)plt.title('boxplot')print (f)for box in f['boxes']:box.set( color ='b', linewidth =1) # 箱体边框颜色box.set( facecolor = 'b' ,alpha =0.5) # 箱体内部填充颜色for whisker in f['whiskers']:whisker.set(color ='k', linewidth =0.5,linestyle ='-')for cap in f['caps']:cap.set(color ='gray', linewidth =2)for median in f['medians']:median.set(color ='DarkBlue', linewidth =2)for flier in f['fliers']:flier.set(marker ='o', color ='y', alpha =0.5)# boxes, 箱线# medians, 中位值的横线,# whiskers, 从box 到error bar 之间的竖线.# fliers, 异常值# caps, error bar 横线# means, 均值的横线,A61CC148D0>, <matplotlib.lines.Line2D object at 0x000002A61CB9DF28>, <matplotlib.lin es.Line2D object at 0x000002A61CB9D208>], 'fliers': [<matplotlib.lines.Line2D object at 0x000002A61CBD4B70>, <matplotlib.lines.Line2D object at 0x000002A61CBECB00>, <mat plotlib.lines.Line2D object at 0x000002A61CC03A90>, <matplotlib.lines.Line2D object at 0x000002A61CC19A20>, <matplotlib.lines.Line2D object at 0x000002A61CC24EB8>], 'wh iskers': [<matplotlib.lines.Line2D object at 0x000002A61CBCBE80>, <matplotlib.lines. Line2D object at 0x000002A61CBCBFD0>, <matplotlib.lines.Line2D object at 0x000002A61 CBDCFD0>, <matplotlib.lines.Line2D object at 0x000002A61CBE2940>, <matplotlib.lines. Line2D object at 0x000002A61CBF1F98>, <matplotlib.lines.Line2D object at 0x000002A61 CBF78D0>, <matplotlib.lines.Line2D object at 0x000002A61CC09F28>, <matplotlib.lines. Line2D object at 0x000002A61CC0D860>, <matplotlib.lines.Line2D object at 0x000002A61 CC1FEB8>, <matplotlib.lines.Line2D object at 0x000002A61CC247F0>]}In [15]:Col1 Col2 X Y0 0.479199 0.121721 A A1 0.710598 0.417871 A B2 0.935067 0.622724 A A3 0.528266 0.730086 A B4 0.898821 0.328273 A AOut[15]:array([<matplotlib.axes._subplots.AxesSubplot object at 0x000002A61D0A1940>, <matplotlib.axes._subplots.AxesSubplot object at 0x000002A61D0E9FD0>], dtype=object)# 箱型图# plt.boxplot()绘制# 分组汇总df = pd.DataFrame(np.random.rand(10,2), columns =['Col1', 'Col2'] )df['X'] = pd.Series(['A','A','A','A','A','B','B','B','B','B'])df['Y'] = pd.Series(['A','B','A','B','A','B','A','B','A','B'])print (df.head())df.boxplot(by = 'X')df.boxplot(column =['Col1','Col2'], by =['X','Y'])# columns :按照数据的列分子图# by :按照列分组做箱型图。
《Python数据可视化》第2章 使用matplotlib绘制简单图表

2.2.1 使用bar()绘制柱形图或堆积柱形图
• 绘制堆积柱形图
在使用bar()函数绘制图表时,可以通过给该函数的bottom参数传值的方式控制柱 形的y值,使后绘制的柱形位于先绘制的柱形的上方。
示例
# 绘制堆积柱形图 plt.bar(x, y1, tick_label=['a', 'b', 'c', 'd', 'e'], width=bar_width) plt.bar(x, y2, bottom=y1,width=bar_width)
2.2.1 使用bar()绘制柱形图或堆积柱形图
使用pyplot的bar()函数可以快速地绘制柱形图或堆积柱形图 。
bar(x, height, width=0.8, bottom=None, align=‘center’, tick_label 语法 =None, xerr=None, yerr=None, **kwargs)
2.1.2 实例1:未来15天最高气温和最低气温
人们每天的生活离不开天气预报,无论是居家还是外出,人们都时刻关注着天气的变化,以便随时备好伞具、 增减衣服,或者为后期的出行计划做好准备。
2.1.2 实例1:未来15天最高气温和最低气温
本实例要求根据下表的数据,将日期列的数据作为x轴数据,将最高气温和最低气温两列的数据作为y轴数据, 使用plot()函数绘制下图所示的折线图。
bar()函数会返回一个BarContainer类的对象。
• BarContainer类的对象是一个包含柱形或误差棒的容器,它亦可以视为一 个元组,可以遍历获取每个柱形或误差棒。
• BarContainer类的对象也可以访问patches或errorbar属性分别获取图表中 所有的柱形或误差棒。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7
快速绘图
plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2) plt.plot(x,z,"b--",label="$cos(x^2)$“)
8
快速绘图
接下来通过一系列函数设置绘图对象的各 个属性: plt.xlabel("Time(s)")
plt.ylabel("Volt") plt.title("PyPlot First Example") plt.ylim(-1.2,1.2) plt.legend()
• xlabel / ylabel : 设置X轴/Y轴的文字 • title : 设置图表的标题 • ylim : 设置Y轴的范围 • legend : 显示图示
14
快速绘图
下面的程序创建3行2列共6个轴,通过 axisbg参数给每个轴设置不同的背景颜色。
for idx, color in enumerate("rgbyck"): plt.subplot(320+idx+1, axisbg=color)
实际上不需要调用show()显示图表, 可以直接用savefig()将图表保存成图像文件. 使用这种方法可以很容易编写出 批量输出图表 的程序.
12
快速绘图
绘制多轴图
一个绘图对象(figure)可以包含多个轴 (axis),在Matplotlib中用轴表示一个绘图区 域,可以将其理解为子图。上面的第一个例子 中,绘图对象只包括一个轴,因此只显示了一 个轴(子图(Axes) )。可以使用subplot函数快 速绘制有多个轴的图表。subplot函数的调用 形式如下:
接下来调用figure创建一个绘图对象,并且 使它成为当前的绘图对象。
plt.figure(figsize=(8,4))
通过figsize参数可以指定绘图对象的宽度和 高度,单位为英寸;dpi参数指定绘图对象的分辨 率,即每英寸多少个像素,缺省值为80。因此本 例中所创建的图表窗口的宽度为8*80 = 640像 素。
subplot(numRows, numCols, plotNum)
13
快速绘图
subplot将整个绘图区域等分为numRows 行和 numCols列个子区域,然后按照从左到 右,从上到下的顺序对每个子区域进行编号, 左上的子区域的编号为1。如果numRows, numCols和plotNum这三个数都小于10的话 ,可以把它们缩写为一个整数,例如 subplot(323)和subplot(3,2,3)是相同的。 subplot在plotNum指定的区域中创建一个轴 对象。如果新创建的轴和之前创建的轴重叠的 话,之前的轴将被删除。
plot函数的调用方式很灵活,第一句将x,y 数组传递给plot之后,用关键字参数指定各种 属性:
• label : 给所绘制的曲线一个名字,此名字在图示 (legend)中显示。只要在字符串前后添加''$''符 号,matplotlib就会使用其内嵌的latex引擎绘制的 数学公式。
• color : 指定曲线的颜色 • linewidth : 指定曲线的宽度 第三个参数‘’b--``指定曲线的颜色和线型
10
快速绘图
11
快速绘图
还可以调用plt.savefig()将当前的Figure 对象保存成图像文件,图像格式由图像文件的 扩展名决定。下面的程序将当前的图表保存为 “test.png”,并且通过dpi参数指定图像的分辨 率为 120,因此输出图像的宽度为“8X120 = 960”个像素。
run matplotlib_simple_plot.py plt.savefig("test.png",dpi=120)
pylab模块 matplotlib还提供了名为pylab的模块, 其中包括了许多numpy和pyplot中常用的函数 ,方便用户快速进行计算和绘图,可以用于 IPython中的快速交互式使用。
5
快速绘图
matplotlib中的快速绘图的函数库可以通过 如下语句载入:
import matplotlib.pyplot as plt
6
快速绘图
也可以不创建绘图对象直接调用接下来的 plot函数直接绘图,matplotlib会自动创建一个 绘图对象。
如果需要同时绘制多幅图表的话,可以是给 figure传递一个整数参数指定图标的序号,如果 所指定序号的绘图对象已 经存在的话,将不创建 新的对象,而只是让它成为当前绘图对象。
下面的两行程序通过调用plot函数在当前的 绘图对象中进行绘图:
Matplotlib
—绘制精美的图表
1
目录
快速绘图
快速绘图 绘制多轴图 坐标轴设定
绘图函数简介
对数坐标图 极坐标图 柱状图 散列图
2
目录
图像 等值线图 三维绘图
3
4
快速绘图
快速绘图
matplotlib的pyplot子库提供了和matlab 类似的绘图ot.py)
最后调用plt.show()显示出创建的所有绘 图对象。
9
快速绘图
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 1000) y = np.sin(x) z = np.cos(x**2)
plt.figure(figsize=(8,4)) plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2) plt.plot(x,z,"b--",label="$cos(x^2)$") plt.xlabel("Time(s)") plt.ylabel("Volt") plt.title("PyPlot First Example") plt.ylim(-1.2,1.2) plt.legend() plt.show()