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属性分别获取图表中 所有的柱形或误差棒。
pythonmatplotlib绘图大全(散点图、柱状图、饼图、极坐标图、热量图、三维图以及热图)

pythonmatplotlib绘图⼤全(散点图、柱状图、饼图、极坐标图、热量图、三维图以及热图)//2019.7.14晚matplotlib七种常见图像输出编程⼤全七种图形汇总输出如下:import numpy as np #导⼊数据结构nmupy模块import matplotlib.pyplot as plt #导⼊matplotlib图像输出模块plt.rcParams["font.sans-serif"]=["SimHei"] #输出图像的标题可以为中⽂正常输出plt.rcParams["axes.unicode_minus"]=False #可以正常输出图线⾥的负号(必会⽤到的导⼊模块)#1-1散点图输出fig=plt.figure()fig.add_subplot(3,3,1)n=128X=np.random.normal(0,1,n) #随机数X的⽣成(⽣成正态分布,平均数为0,⽅差为1,个数为128)Y=np.random.normal(0,1,n) #随机数Y的⽣成(⽣成正态分布,平均数为0,⽅差为1,个数为128)T=np.arctan2(Y,X)#plt.axes([0.025,0.025,0.95,0.95]) #指定显⽰范围plt.scatter(X,Y,s=75,c=T,alpha=.5) #画散点图的函数scatter(其中XY表⽰数值的⼤⼩,s表⽰散点的尺⼨⼤⼩,c表⽰颜⾊,alpha表⽰透明度)plt.xlim(-1.5,1.5),plt.xticks([]) #x和y坐标轴的范围plt.ylim(-1.5,1.5),plt.yticks([]) #x和y坐标轴的范围plt.axis() #显⽰所有图像范围plt.title("scatter")plt.xlabel("x")plt.ylabel("y")#1-2bar 柱状图fig.add_subplot(3,3,2)n=10X=np.arange(n) #定义从0-9的数列Y1=(1-X/float(n))*np.random.uniform(0.5,1.0,n) #定义变量X的计算⽅式Y2=(1-X/float(n))*np.random.uniform(0.5,1.0,n) #定义变量Y的计算⽅式plt.bar(X,Y1,facecolor="#9999ff",edgecolor="white") #编辑输出柱状图的格式(其中facecolor表⽰输出柱状图的颜⾊,edgecolor表⽰边框的颜⾊)plt.bar(X,-Y2,facecolor="#ff9999",edgecolor="white") #编辑输出柱状图的格式for x,y in zip(X,Y1): #编辑输出柱状图的位置格式(其中0.4表⽰每个柱状图之间的距离,'%.2f'% y表⽰输出⼩数点的位数,ha表⽰数值标注横向对齐,va表⽰柱状图纵向对齐位置)plt.text(x,y+0.05,'%.2f'% y,ha='center',va="bottom")for x, y in zip(X,Y2):plt.text(x,-y-0.05,'%.2f'% y,ha='center',va="top")#Pie1-3(饼图)fig.add_subplot(3,3,3)n=20z=np.ones(n)z[-1]=2plt.pie(z,explode=z*.05,colors=["%f"%(i/float(n)) for i in range(n)],labels=["%.2f"%(i/float(n)) for i in range(n)])#其中z为原来输⼊的数组,explode表⽰整个扇形距离圆⼼的距离⼤⼩(如果不写默认为0),colors表⽰颜⾊变化,labels表⽰各个扇形的数值⼤⼩(其中2表⽰⼩数位数⼤⼩plt.gca().set_aspect("equal") #圆形plt.xticks([])plt.yticks([])plt.show()theta=np.arange(0.0,2*np.pi,2*np.pi/n) #定义⾓度radii=10*np.random.rand(n) #定义半径plt.plot(theta,radii) #输出折线图#plt.polar(theta,radii)两种⽅式都可以 #输出极坐标图data=np.random.rand(3,3)cmap=cm.Blues #选择颜⾊系为蓝⾊体系map=plt.imshow(data,interpolation="nearest",cmap=cmap,aspect="auto",vmin=0,vmax=1) #设置图像输出时的格式y=np.random.randint(1,10,10)z=x*2+2*y #函数关系式plt.plot(x,y,z,"r") #输出3D图像#1-7 hotmap热流图fig.add_subplot(313)def f(x,y):return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)n=256x=np.linspace(-3,3,n)y=np.linspace(-3,3,n)X,Y=np.meshgrid(x,y) #将xy转换为矩阵#将向量x和y定义的区域转换成矩阵X和Y,其中矩阵X的⾏向量是向量x的简单复制,⽽矩阵Y的列向量是向量y的简单复制#假设x是长度为m的向量,y是长度为n的向量,则最终⽣成的矩阵X和Y的维度都是 nm (注意不是mn)plt.contourf(X,Y,f(X,Y),8,cmap=plt.cm.hot) #输出热流图plt.show()。
python强大的绘图模块matplotlib示例讲解

python强⼤的绘图模块matplotlib⽰例讲解Matplotlib 是 Python 的绘图库。
作为程序员,经常需要进⾏绘图,在我⾃⼰的⼯作中,如果需要绘图,⼀般都是将数据导⼊到excel中,然后通过excel⽣成图表,这样操作起来还是⽐较繁琐的,所以最近学习了⼀下Matplotlib模块,将该模块的常⽤的绘图⼿段和⼤家分享⼀下,提⾼⼤家在⼯作中的效率;在⽰例中,我们主要⽤到Matplotlib和Numpy这两个模块来为⼤家演⽰Python强⼤的绘图功能,相信⼤家通过我下⾯的10个⽰例,基本上可以满⾜⼤家⽇常⼯作的需求,再次强调⼀下,只是简单的⽤法,⼤家千万不要想通过这篇博客获取到太⾼深的⽤法。
下⾯进⼊正题1、绘制⼀条直线代码如下,下⾯的代码⼤家应该都可以看懂吧# 导⼊常⽤的包import numpy as npimport matplotlib.pyplot as plt# ⽣成-1到1的数据,⼀共⽣成100个,也可以⽣成1到-1的数据,这些数据是平均分布的# 定义x轴的数据x = np.linspace(-1,1,100)# 定义y轴的数据y = x * 2 + 100plt.plot(x,y)# 显⽰图像plt.show()效果如下2、创建⼀个画布,同时设置该画布的⼤⼩代码如下import numpy as npimport matplotlib.pyplot as pltx = np.linspace(-1,1,100)y1 = x * 2 + 100y2 = x ** 2# 创建⼀个画布# figsize:设置画布的⼤⼩plt.figure(figsize=(2,2))plt.plot(x,y1)# 创建第⼆个画布plt.figure()plt.plot(x,y2)plt.show()效果如下,会同时显⽰两张画布3、在⼀张画布中画两条线,同时可以设置线的颜⾊,宽度,和风格代码如下import numpy as npimport matplotlib.pyplot as pltx = np.linspace(-1,1,100)y1 = x * 2 + 0.5y2 = x ** 2# color:表⽰设置线的颜⾊# linewidth:表⽰设置线的宽度# linestyle:表⽰设置线的风格plt.figure(figsize=(2,2))plt.plot(x,y1,color='r',linewidth=1.0,linestyle='--')plt.plot(x,y2,color='b',linewidth=5.0,linestyle='-')plt.show()# 上⾯的效果就是2条曲线被放到⼀个画布中效果如下4、限制x轴,y轴的显⽰范围,为x轴和y轴添加描述,替换x轴和y轴的显⽰信息代码如下import numpy as npimport matplotlib.pyplot as plt# 设置坐标轴x = np.linspace(-3,3,100)y1 = x * 2 + 0.5y2 = x ** 2plt.figure(figsize=(6,6))plt.plot(x,y1,color='r',linewidth=1.0,linestyle='--')plt.plot(x,y2,color='b',linewidth=5.0,linestyle='-')# 限制x轴的显⽰范围plt.xlim((-1,2))# 限制y轴的显⽰范围plt.ylim((-1,5))# 给x轴加描述plt.xlabel("xxxxxx")# 给y轴加描述plt.ylabel("yyyyyy")# 替换⼀下横坐标的显⽰temp = np.linspace(-2,2,11)plt.xticks(temp)# 替换纵坐标的标签,⽤level0代替之前的-1plt.yticks([-1,0,1,2,3,4,5],["level0","level1","level2","level3","level4","level5","level6"]) plt.show()效果如下5、对边框进⾏设置,调整x轴和y轴的位置代码如下import numpy as npimport matplotlib.pyplot as plt# 设置坐标轴x = np.linspace(-3,3,100)y1 = x * 2 + 0.5y2 = x ** 2plt.figure(figsize=(6,6))plt.plot(x,y1,color='r',linewidth=1.0,linestyle='--')plt.plot(x,y2,color='b',linewidth=5.0,linestyle='-')# 限制x轴的显⽰范围plt.xlim((-1,2))# 限制y轴的显⽰范围plt.ylim((-1,5))# 给x轴加描述plt.xlabel("xxxxxx")# 给y轴加描述plt.ylabel("yyyyyy")# 替换⼀下横坐标的显⽰temp = np.linspace(-2,2,11)plt.xticks(temp)# 替换纵坐标的标签,⽤level0代替之前的-1# plt.yticks([-1,0,1,2,3,4,5],["level0","level1","level2","level3","level4","level5","level6"]) # 获取边框ax = plt.gca()# 设置右边框的颜⾊为红⾊ax.spines["right"].set_color("r")# 去掉上边框ax.spines["top"].set_color(None)# 把x轴的刻度设置为bottomax.xaxis.set_ticks_position("bottom")# 把y轴的客户设置为leftax.yaxis.set_ticks_position("left")# 设置x和y交汇的点,x轴是0,y是也是0,也就是x轴和y轴的都是0点交汇ax.spines["bottom"].set_position(("data",0))ax.spines["left"].set_position(("data",0))plt.show()效果如下6、为画布添加图例代码如下#Auther Bob#--*--conding:utf-8 --*--import numpy as npimport matplotlib.pyplot as plt# 设置图例x = np.linspace(-3, 3, 100)y1 = x * 2 + 0.5y2 = x ** 2plt.figure(figsize=(6, 6))# ⾸先要为两条线分别取名,这⾥的逗号必须要有l1, = plt.plot(x, y1, color='r', linewidth=1.0, linestyle='--')l2, = plt.plot(x, y2, color='b', linewidth=5.0, linestyle='-')# handles控制图例中要说明的线# labels为两条线分别取⼀个label# loc控制图例的显⽰位置,⼀般⽤best,由代码为我们选择最优的位置即可plt.legend(handles=[l1, l2], labels=["test1", "test2"], loc='best')# 限制x轴的显⽰范围plt.xlim((-1, 2))# 限制y轴的显⽰范围plt.ylim((-1, 5))# 给x轴加描述plt.xlabel("xxxxxx")# 给y轴加描述plt.ylabel("yyyyyy")# 替换⼀下横坐标的显⽰temp = np.linspace(-2, 2, 11)plt.xticks(temp)# 替换纵坐标的标签,⽤level0代替之前的-1plt.yticks([-1, 0, 1, 2, 3, 4, 5], ["level0", "level1", "level2", "level3", "level4", "level5", "level6"]) # 为图像加⼀个图例,⽤来对图像做说明plt.show()效果如下7、为图像添加描述代码如下import numpy as npimport matplotlib.pyplot as plt# 为图像做标注x = np.linspace(-3,3,100)y1 = x * 2# y2 = x ** 2plt.figure(figsize=(6,6))plt.plot(x,y1,color='r',linewidth=1.0,linestyle='-')# 给x轴加描述plt.xlabel("xxxxxx")# 给y轴加描述plt.ylabel("yyyyyy")# ======================================================# 在x轴为x0,y轴为x0 * 2上画⼀个点,这个点的颜⾊是红⾊,⼤⼩为50,这个⼤⼩就是这个点显⽰的⼤⼩x0 = 0.5y0 = x0 * 2# scatter是画点的⽅法plt.scatter(x0,y0,color='g',s=50)# 画线# 这条线是第⼀个点的坐标为[x0,y0],第⼆个点的坐标为[x0,-6],后⾯就是设置线的风格,线的颜⾊,线的宽度plt.plot([x0,x0],[y0,-6],color='k',linestyle='--',linewidth=1.0)# 画箭头和描述# xy代表我们的点# xytext代码我们描述的位置,基于当前的点,在x轴+30,在y轴-30# r'$2*x={n}$是我们要显⽰的⽂字信息,格式必须要这样# textcoords表⽰作为起点# fontsize表⽰设置字体⼤⼩# arrowprops设置箭头# arrowstyle设置箭头的样式# connectionstyle设置风格.2表⽰弧度plt.annotate(r'$2*0.5={n}$'.format(n = y0),xy=(x0,y0),xytext=(+30,-30),textcoords='offset points',fontsize=10,arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2')) # 显⽰⽂字描述,从x轴为-1,y轴为2开始显⽰,$$中就是要显⽰的字符,这⾥如果要显⽰空格,则需要转义# fontdict设置字体plt.text(-1,2,r'$1\ 2\ 3\ 4$',fontdict={"size":16,"color":"r"})# =========================================================# 为图像加⼀个图例,⽤来对图像做说明plt.show()效果如下8、绘制散点图代码如下import numpy as npimport matplotlib.pyplot as plt# 绘制散点图# plt.scatter(np.arange(1,10,1),np.arange(10,19,1))# plt.scatter(np.linspace(-3,3,10),np.linspace(-3,3,10)) x = np.random.normal(1,10,500)y = np.random.normal(1,10,500)print(x)# s设置点的⼤⼩# c是颜⾊# alpha是透明度plt.scatter(x,y,s=50,c='b',alpha=0.5)plt.show()效果如下9、绘制直⽅图代码如下import numpy as npimport matplotlib.pyplot as plt# 绘制直⽅图x = np.arange(10)y = x ** 2 + 10# facecolor设置柱体的颜⾊# edgecolor设置边框的颜⾊plt.bar(x,y,facecolor='g',edgecolor='r')# 绘制翻转过来的直⽅图# plt.bar(x,-y)#显⽰⽂字for x,y in zip(x,y):plt.text(x,y,"{f}".format(f=y),ha="center",va='bottom') plt.show()效果如下10、⼀张画布显⽰多张图像代码如下#Auther Bob#--*--conding:utf-8 --*--import numpy as npimport matplotlib.pyplot as plt# plt.figure()# 有⼀个两⾏两列的单元格,这个位于第⼀个单元格# plt.subplot(2,2,1)# 画⼀条【0,0】-----》【1,1】的直线# plt.plot([0,1],[0,1])# 有⼀个两⾏两列的单元格,这个位于第⼀个单元格# plt.subplot(2,2,2)# 画⼀条【0,0】-----》【1,1】的直线# plt.plot([0,1],[0,1])# 有⼀个两⾏两列的单元格,这个位于第⼀个单元格# plt.subplot(2,2,3)# 画⼀条【0,0】-----》【1,1】的直线# plt.plot([1,0],[0,1])# plt.show()# 上⾯的例⼦,每张图他显⽰的⼤⼩是⼀样的,我们想显⽰不同的⼤⼩该怎么办?plt.figure()# 有⼀个两⾏三列的单元格,这个位于第⼀个单元格plt.subplot(2,1,1)# 画⼀条【0,0】-----》【1,1】的直线plt.plot([0,1],[0,1])# 有⼀个两⾏三列的单元格,这个位于第四个单元格,因为第⼀个单元格占了3个位⼦,所以这⾥就是第四个plt.subplot(2,3,4)# 画⼀条【0,0】-----》【1,1】的直线plt.plot([0,1],[0,1])# 有⼀个两⾏三列的单元格,这个位于第五个单元格plt.subplot(2,3,5)# 画⼀条【0,0】-----》【1,1】的直线plt.plot([1,0],[0,1])plt.show()效果如下11、matplotlib模块中的颜⾊和线条风格,取⾃菜鸟教程作为线性图的替代,可以通过向 plot() 函数添加格式字符串来显⽰离散值。
数据可视化基础专题(十一):Matplotlib基础(三)常用图表(一)折线图、散点图、柱状图

Python数据可视化之使⽤matplotlib绘制简单图表⽬录⼀、绘制折线图⼆、绘制柱形图或堆积图形三、绘制条形图或堆积条形图四、绘制堆积⾯积图五、绘制直⽅图六、绘制饼图或者圆环图七、绘制散点图或⽓泡图⼋、绘制箱形图九、绘制雷达图⼗、绘制误差棒图总结⼀、绘制折线图使⽤plot()绘制折线图常⽤的参数:x:表⽰x轴的数据y:表⽰y轴的数据fmt:表⽰快速设置条样式的格式字符串。
label:表⽰应⽤于图例的标签⽂本。
plot()会返回⼀个包含Line2D类对象(代表线条)的列表。
plot()函数的语法格式:plot(x,y ,fmt , scalex=True , scaley=true , data=None, label=None 等.....)实例:(1)(2)⼆、绘制柱形图或堆积图形使⽤bar()绘制柱形图或堆积柱形图bar()的语法格式有:bar(x, height , width=0.8, bottom=None, align='center',data=None, tick_label=None, xerr=None, yerr=None, error_kw=None)常⽤参数的含义:x:表⽰柱形的x坐标值height:表⽰柱形的⾼度width:表⽰柱形的宽度,默认为0.8bottom:表⽰柱形底座的y坐标值,默认为0align:表⽰柱形的对齐⽅式,有’center’和’edge’两个值,其中’center’表⽰将柱形刻度居中对齐;‘edge’表⽰将柱形的左边与刻度线对齐。
tick_label:表⽰柱形对应的刻度标签xerr,yerr:若未设为None,则需要为柱形图添加⽔平/ 垂直误差棒error_kw:表⽰误差棒的属性字典,字典的键对应errorbar()函数bar()函数会返回⼀个BarContainer类的对象。
import numpy as npimport matplotlib.pyplot as pltx=np.arange(5)y1=np.array([10,8,7,11,13])bar_width=0.4plt.bar(x,y1,tick_label=['a','b','c','d','e'],width=bar_width)plt.title("2020080603039")plt.show()(2)具有多组柱形的柱形图(3)通过给bottom参数传值的⽅式的⽅式控制柱形的y值三、绘制条形图或堆积条形图使⽤barh()绘制条形图或堆积条形图使⽤barh()函数的语法格式:barh(y, width, heigth=0.8, left=None, align='center', *)常⽤的参数的含义如下:y:表⽰条形的y坐标width:表⽰柱形的宽度,默认为0.8height:表⽰柱形的⾼度left:条形左侧的x坐标,默认为0align:表⽰柱形的对齐⽅式,有’center’和’edge’两个值,其中’center’表⽰将柱形刻度居中对齐;‘edge’表⽰将柱形的左边与刻度线对齐。
Python数据分析-Matplotlib图标绘制

Python数据分析-Matplotlib图标绘制Matplotlib介绍 Matplotlib是⼀个强⼤的Python绘图和数据可视化的⼯具包。
Matplotlib的主要功能 Matplotlib是python中的⼀个包,主要⽤于绘制2D图形(当然也可以绘制3D,但是需要额外安装⽀持的⼯具包)Matplotliban安装、调⽤ 安装:pip install matplotlib 调⽤:import matplotlib.pyplot as pltPlot函数绘制多条曲线⼀维参数例如传⼊⼀个list对象使⽤plot,打印输出形成的图像a=[1,2,3]plt.plot(a) #只有⼀个参数时,值代表y轴的值,x为值对应的索引plt.show()结果:plot画出的图中横坐标是list的index,纵坐标是list的value,他会在图上形成三个点,然后将点连成线,所以它形成的是折线图,因为list满⾜线性关系(y的值是连续的),所以形成的图像是⼀个直线。
⼆维参数例如传⼊2个list对象使⽤plot,打印输出形成的图像a=[1,2,3]b=[4,5,6]plt.plot(a,b)plt.show()结果:折线图会根据传⼊参数的变化,线形状会发⽣变化注意:传⼊的2个参数数值位数必须⼀致,否则会出现ValueError报错设定线条风格(点线、虚线、圆点、颜⾊设置)线型linestyle(-,-.,--,.)点型marker(v,^,s,*,H,+,x,D,o,…)颜⾊color(b,g,r,y,k,w,…)1.默认是实现,可以设置成点线和虚线2.默认是蓝⾊,可以设置成其他颜⾊虚线 ' -- ' ,参数指定了线的类型为虚线a=[1,2,3]b=[4,5,8]plt.plot(a,b,'--')plt.show()点线 ‘ * ’,参数制定了线的类型为点线(plt.plot(a,b,'o'), o 表⽰圆点)a=[1,2,3]b=[4,5,8]plt.plot(a,b,'*')plt.show()颜⾊例如设定红⾊线条a=[1,2,3]b=[4,5,8]plt.plot(a,b,'r') #plt.plot(a,b,'red') 也可以直接写颜⾊的英⽂单词plt.show()形状+颜⾊联合设定,例如设定绿⾊+虚线线条a=[1,2,3]b=[4,5,8]plt.plot(a,b,'g--') #绿⾊并且虚线plt.show()绘制多条曲线#plot函数绘制多条曲线标题:set titlex轴: set xlabely轴: set ylabel只需要依次指定每组(两两)线条的x、y坐标即可#⼀个图像中绘制多个线条a=[1,2,3]b=[4,5,8]c=[7,8,6]d=[1,5,2]plt.plot(a,b,c,d,'r--')plt.show()可以给不同线条指定不同的风格a=[1,2,3]b=[4,5,8]c=[7,8,6]d=[1,5,2]plt.plot(a,b,'bo',c,d,'r+')plt.show()多曲线基础操作演⽰1)⾸先⽣成数据,绘制2条线#⼀个窗⼝下绘制两条线,并对其添加显⽰内容t=np.arange(0,2,0.1)print(t)print(t.size) #20#np.sin()取传⼊的参数的正弦#np.pi 是⼀个常量,代表3.1415926...s=np.sin(t*np.pi)print(s)print(s.size) #20'''[ 0.00000000e+00 3.09016994e-01 5.87785252e-01 8.09016994e-019.51056516e-01 1.00000000e+00 9.51056516e-01 8.09016994e-015.87785252e-01 3.09016994e-01 1.22464680e-16 -3.09016994e-01-5.87785252e-01 -8.09016994e-01 -9.51056516e-01 -1.00000000e+00-9.51056516e-01 -8.09016994e-01 -5.87785252e-01 -3.09016994e-01]'''plt.plot(t,s,'r--',t*2,s,'g--')plt.show()显⽰结果2)为x、y轴坐标设置标签label说明plt.plot(t,s,'r--',t*2,s,'g--')plt.xlabel('x轴')plt.ylabel('y轴')plt.show()结果:存在两个问题 1):中⽂⽆法识别 2):坐标负号显⽰可能会有问题做数据分析时,可以提前再开头写⼊这2⾏,避免中⽂、负号识别问题:解决问题1:中⽂内容⽆法识别问题,在建⽴图标之前加⼊⼀⾏代码#解决中⽂标签不显⽰问题plt.rcParams['font.sans-serif'] = ['SimHei']解决问题2:坐标轴上负号⽆法显⽰的问题#负号显⽰问题plt.rcParams['axes.unicode_minus'] = False3)为图像指定title标题说明plt.title('元素正弦图⽰')4)为图像指定图例label(即每条线设置描述说明)#分别为2条线侧⾯添加描述说明plt.plot(t,s,'r--',label='线条⼀⾛向')plt.plot(t*2,s,'g--',label='线条⼆⾛向')plt.xlabel('x轴')plt.ylabel('y轴')plt.title('元素正弦图⽰')#⼀定要加结束语plt.legend()plt.show()最终显⽰结果曲线图操作展⽰初级(1)numpy+matplotlib结合,根据提供的值得出x、y轴的显⽰图import matplotlib.pyplot as pltimport numpy as npimport pandas as pd#实例1#从[-1,1]中取50个等差值x=np.linspace(-1,1,50)#print(x)y=2*x +1#x:横坐标的值 y:纵坐标的值res1=plt.plot(x,y)print(res1) #[<matplotlib.lines.Line2D object at 0x0ACE2350>] 返回的是⼀个matplotlib.lines.Line2D对象#将设置好的figure(图形、形状)显⽰出来plt.show()结果为延伸:变化如果y=2^x,再次求最终的图像显⽰x=np.linspace(-1,1,50)#y=2^x平⽅,因为不是同⽐增长,⽣成的图像如下y=2**x +1plt.plot(x,y)plt.show()结果为hist函数绘制频数直⽅图实验⼀:第⼀步:⽣成⼀个100*100初始值为0的⼆维数组import matplotlib.pyplot as pltimport numpy as npimport pandas as pdimport random第⼀步:⽣成⼀个100*100初始值为0的⼆维数组data=np.zeros((100,100),dtype=int)第⼆步:利⽤random模块将数组中每个值变为0-20的随机值第⼆步:利⽤random模块将数组中每个值变为0-20的随机值for i in range(len(data)):#拿到每⼀⾏数组的长度for j in range(len(data[0])):#根据以上2个参数可以⼀次循环取出数组中的没⼀个参数,并通过下⾯操作给每个参数随机赋值 data[i][j] = random.randint(1,20)print('初始Numpy,data数组的变化')print(type(data)) #<class 'numpy.ndarray'>第三步:将Numpy数组类型转为DataFrame类型(即让数组有横竖的坐标)第三步:将Numpy数组类型转为DataFrame类型(即让数组有横竖的坐标)data_new=pd.DataFrame(data)print(data_new)'''DataFrame变化后的改变0 1 2 3 4 5 6 7 8 ... 91 92 93 94 95 96 97 98 990 12 5 13 3 19 4 1 4 10 ... 14 2 14 10 4 10 13 15 151 12 18 16 20 6 7 1 14 18 ... 4 15 19 8 20 16 15 8 122 15 9 13 18 12 20 20 9 ... 20 2 1 9 17 9 17 2 23 10 15 8 2 3 16 13 13 19 ... 10 14 15 17 4 7 2 11 94 1 3 6 10 11 14 3 10 13 ... 8 19 1 12 2 10 20 6 55 20 19 11 8 1 19 1 26 ... 1 16 187 17 15 20 15 26 7 14 18 2 14 18 2 14 15 ... 14 11 16 14 12 17 8 10 47 20 12 17 5 11 10 10 8 14 ... 7 20 1 5 10 15 18 13 108 17 16 14 5 7 11 5 16 8 ... 18 8 4 7 7 3 17 10 209 6 7 16 13 7 15 13 15 5 ... 7 5 9 8 7 1 14 15 1710 1 10 9 5 5 11 16 20 10 ... 17 18 18 7 16 3 11 7 1311 3 10 15 17 9 16 19 13 1 ... 5 5 18 1 7 16 15 13 412 13 10 18 17 16 10 12 16 7 ... 12 2 7 16 12 19 7 11 1213 4 10 20 1 1 1 19 6 17 ... 16 5 19 12 16 14 18 14 1314 9 13 18 6 10 8 9 4 1 ... 9 12 6 8 10 1 10 9 1815 6 11 4 5 17 1 10 2 12 ... 20 1 17 8 7 9 17 19 1416 9 2 17 4 17 16 8 16 3 ... 10 11 5 16 1 2 7 18 1617 16 3 2 16 15 17 8 8 13 ... 17 4 11 14 9 12 12 5 1418 9 3 18 1 7 20 1 18 14 ... 1 5 2 12 9 10 6 4 1219 19 18 3 13 18 17 7 12 5 ... 15 2 3 19 8 5 3 7 1420 20 15 5 14 1 19 10 7 16 ... 12 14 12 12 18 15 17 4 621 10 20 19 6 6 20 18 20 5 ... 19 6 20 9 4 15 16 20 522 14 12 2 3 4 14 6 2 16 ... 16 10 5 20 3 14 20 6 1923 14 18 6 12 3 11 10 8 8 ... 9 2 7 13 13 14 3 13 124 2 16 3 20 4 15 15 2 9 ... 20 7 16 13 3 1 18 5 1725 9 17 8 15 5 16 1 19 3 ... 17 8 7 4 2 13 4 13 1426 16 12 7 19 13 1 19 16 7 ... 15 11 3 19 19 4 2 1 627 8 14 2 6 7 16 11 19 19 ... 10 7 9 12 18 17 14 12 928 6 14 12 13 18 20 10 9 12 ... 15 2 20 14 11 6 16 19 329 18 3 13 15 20 5 10 18 17 ... 5 17 11 20 10 15 3 12 9.. .. .. .. .. .. .. .. .. .. ... .. .. .. .. .. .. .. .. ..70 5 9 20 9 20 4 3 12 17 ... 10 6 17 14 1 9 6 10 1071 11 10 17 14 19 2 4 19 5 ... 8 4 7 1 20 13 7 11 1572 13 11 16 15 3 8 4 17 13 ... 6 8 20 3 12 8 14 20 773 2 19 6 1 12 2 14 10 14 ... 10 17 9 1 18 1 6 14 774 3 8 17 1 12 4 17 18 7 ... 16 10 15 6 16 3 5 8 1775 1 15 4 9 20 5 16 9 20 ... 18 13 10 6 19 9 20 12 1676 16 6 6 19 4 5 8 1 11 ... 17 17 20 6 14 1 4 5 177 15 4 16 19 8 4 11 10 12 ... 1 6 19 13 12 16 10 3 1378 18 16 20 13 16 15 18 11 4 ... 4 12 5 17 16 18 15 17 1079 20 1 18 6 3 7 19 6 10 ... 14 16 12 8 15 9 5 6 680 15 14 4 1 14 8 10 18 14 ... 13 10 18 16 5 8 11 7 481 3 19 1 8 13 8 20 19 8 ... 7 19 9 9 9 6 10 19 2082 9 18 19 1 3 1 13 6 3 ... 8 14 7 5 14 3 7 5 1183 15 5 14 13 18 3 1 5 10 ... 12 7 14 5 1 11 7 6 384 12 18 16 10 19 6 9 3 8 ... 19 7 1 7 9 12 6 20 1385 16 16 2 17 3 3 8 15 2 ... 1 20 15 1 17 19 16 4 486 2 12 11 7 5 14 19 19 18 ... 3 4 16 2 8 6 13 18 1187 10 13 19 20 6 17 3 20 7 ... 16 2 8 20 19 14 17 6 788 6 3 7 12 13 19 1 17 14 ... 14 10 18 12 14 14 4 12 889 16 8 19 12 14 15 2 11 19 ... 2 18 20 6 18 9 20 10 290 12 17 19 19 17 18 18 14 6 ... 7 13 16 5 3 16 10 4 1191 16 1 13 13 4 12 18 12 4 ... 11 19 5 6 18 18 9 17 1792 3 8 10 1 13 1 15 19 19 ... 20 18 15 5 14 12 13 16 893 11 9 12 10 4 2 14 6 16 ... 6 11 11 9 11 7 8 17 1494 13 3 6 3 16 3 3 11 10 ... 8 6 17 17 14 9 7 4 595 2 3 9 17 1 14 17 3 18 ... 3 4 12 6 7 14 12 14 896 3 18 8 5 11 10 11 11 19 ... 2 13 15 14 18 9 11 13 1997 2 3 5 15 5 7 13 4 16 ... 12 2 16 5 1 10 10 2 1398 3 9 6 4 2 13 5 20 12 ... 6 20 14 7 6 4 10 12 1499 20 16 3 12 14 11 14 7 10 ... 9 3 11 17 5 3 9 1 15'''print(type(data_new)) #<class 'pandas.core.frame.DataFrame'>第四步:从DataFrame数组中取第1列的值#拿到第⼀列的值print('取第⼀列的值')print(data_new[0])'''取第⼀列的值0 121 122 153 104 15 206 77 208 179 610 111 312 1313 414 915 616 917 1618 919 1920 2021 1022 1423 1424 225 926 1627 828 629 18..70 571 1172 1373 274 375 176 1677 1578 1879 2080 1581 382 983 1584 1285 1686 287 1088 689 1690 1291 1692 393 1194 1395 296 397 298 399 20Name: 0, Length: 100, dtype: int32'''第五步:通过value_counts()对第四步数据进⾏处理,得出数值与频数的对应关系表,如下#注意value_counts函数统计⼀个series上的数据情况data_new=data_new[0].value_counts()data_new=data_new.sort_index()print('绘制DataFrame数组第⼀列中数值与频率的对应关系柱状图')print(data_new)'''(数值) (频数)1 52 73 124 45 26 67 18 49 510 511 312 413 514 415 616 717 318 319 620 8Name: 0, dtype: int64'''第六步:利⽤plt.hist()绘制柱状图通过DataFrame绘制第⼀列,数据——频率柱状图#通过DataFrame绘制第⼀列,数据——频率柱状图print('根据上⾯的data_new,绘制第⼀列数据与频率的柱状图')plt.hist(data_new,bins=20) #bins指柱状图的柱数默认是10plt.show()通过DataFrame绘制第⼀列,数据——频率柱状图#通过Numpy绘制每⼀⾏,数据——频率柱状图(横轴:数据纵轴:频数)print('绘制Numpy,data[0]第⼀⾏数据与频率的柱状图')plt.hist(data[0])plt.show()。
高教社2024Python数据可视化教学课件04章Matplotlib统计图表绘制

ax.plot(theta, r2, c='y', marker='d', mfc='r', ms=10, lw=2)
说 明 : 以上两种方法绘图效果相同。第二种方法使用的绘图函数是ax.plot(),该方ห้องสมุดไป่ตู้原本是绘制折线 图,但因为ax采用极坐标系,所以原来的x和y位置的参数被理解为了极角和极径。
# 代码1 x = np.linspace(0.1, 0.8, 10) y = np.exp(x) plt.errorbar(x, y, fmt="ro:", yerr=0.15, xerr=0.03)
# 代码2
x = np.linspace(0.1, 0.8, 10)
for patch, color in zip(box['boxes'], colors):
# 遍历box['boxes'], 设置不同的箱体颜色
patch.set_facecolor(color)
plt.axhline(np.mean(y1), c='#FFF68F')
# 均值水平参考线
plt.axhline(np.mean(y2), c='#9999ff')
三、极坐标参数设置
左图绘制了一个整圆和渐开的曲线,同时清空了圆内的标注数字。plt.rgrids()设置同心栅格的极径大小和文 字标注的角度,因此右图中的虚线圆圈只有两个,极径为0.3和1,圆圈上的标注沿45°线排列。函数 plt.thetagrids()设置放射线栅格的角度,因此右图中只有两条放射线,角度为0°和 45°。
极坐标系中点的坐标用弧度(theta)和极径(r)描述,绘制极线图需提供两个相同长度的参数数组theta和r,对 应极角和极径。极线图的绘制有如下两种方法:
数据可视化matplotlib实例

数据可视化matplotlib实例数据可视化在现代社会中扮演着越来越重要的角色,它帮助我们更好地理解和解释数据,从而做出更明智的决策。
而matplotlib作为Python中最流行的数据可视化库之一,提供了丰富的功能和灵活性,使得用户可以轻松创建各种类型的图表。
接下来,我们将通过几个实例来展示matplotlib的强大功能。
一、折线图折线图是一种常见的数据可视化方式,适合展示数据随时间变化的趋势。
通过matplotlib,我们可以轻松绘制出美观的折线图。
首先,我们需要导入matplotlib库,并创建一个包含数据的列表。
然后,通过plt.plot()函数来绘制折线图,设置好x轴和y轴的标签,以及图表的标题,最后通过plt.show()函数显示图表。
二、柱状图柱状图是另一种常见的数据可视化方式,适合比较不同类别的数据。
通过matplotlib,我们可以轻松创建各种样式的柱状图。
首先,我们需要导入matplotlib库,并创建一个包含数据的列表。
然后,通过plt.bar()函数来绘制柱状图,设置好x轴和y轴的标签,以及图表的标题,最后通过plt.show()函数显示图表。
三、散点图散点图是用来展示两个变量之间关系的一种图表类型。
通过matplotlib,我们可以轻松创建各种样式的散点图。
首先,我们需要导入matplotlib库,并创建两个包含数据的列表。
然后,通过plt.scatter()函数来绘制散点图,设置好x轴和y轴的标签,以及图表的标题,最后通过plt.show()函数显示图表。
四、饼图饼图是用来展示数据占比的一种图表类型。
通过matplotlib,我们可以轻松创建各种样式的饼图。
首先,我们需要导入matplotlib库,并创建一个包含数据的列表。
然后,通过plt.pie()函数来绘制饼图,设置好标签和颜色,以及图表的标题,最后通过plt.show()函数显示图表。
总结通过以上几个实例,我们可以看到matplotlib作为一个功能强大的数据可视化库,能够帮助我们轻松创建各种类型的图表,从而更好地理解和展示数据。
Python中使用matplotlib绘制图表

官方示范:可以在这里查询图列和代码 : /gallery.html# Python图表绘制:matplotlib绘图库入门matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图。
而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。
它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序。
因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。
在Linux下比较著名的数据图工具还有gnuplot,这个是免费的,Python有一个包可以调用gnuplot,但是语法比较不习惯,而且画图质量不高。
而Matplotlib则比较强:Matlab的语法、python语言、latex的画图质量(还可以使用内嵌的latex引擎绘制的数学公式)。
Matplotlib.pyplot快速绘图快速绘图和面向对象方式绘图matplotlib实际上是一套面向对象的绘图库,它所绘制的图表中的每个绘图元素,例如线条Line2D、文字Text、刻度等在内存中都有一个对象与之对应。
为了方便快速绘图matplotlib通过pyplot模块提供了一套和MATLAB类似的绘图API,将众多绘图对象所构成的复杂结构隐藏在这套API内部。
我们只需要调用pyplot模块所提供的函数就可以实现快速绘图以及设置图表的各种细节。
pyplot模块虽然用法简单,但不适合在较大的应用程序中使用。
为了将面向对象的绘图库包装成只使用函数的调用接口,pyplot模块的内部保存了当前图表以及当前子图等信息。
当前的图表和子图可以使用plt.gcf()和plt.gca()获得,分别表示"Get Current Figure"和"Get Current Axes"。
在pyplot模块中,许多函数都是对当前的Figure 或Axes对象进行处理,比如说:plt.plot()实际上会通过plt.gca()获得当前的Axes对象ax,然后再调用ax.plot()方法实现真正的绘图。
Python数据可视化之使用matplotlib绘制简单图表

Python数据可视化之使⽤matplotlib绘制简单图表⽬录⼀、绘制折线图⼆、绘制柱形图或堆积图形三、绘制条形图或堆积条形图四、绘制堆积⾯积图五、绘制直⽅图六、绘制饼图或者圆环图七、绘制散点图或⽓泡图⼋、绘制箱形图九、绘制雷达图⼗、绘制误差棒图总结⼀、绘制折线图使⽤plot()绘制折线图常⽤的参数:x:表⽰x轴的数据y:表⽰y轴的数据fmt:表⽰快速设置条样式的格式字符串。
label:表⽰应⽤于图例的标签⽂本。
plot()会返回⼀个包含Line2D类对象(代表线条)的列表。
plot()函数的语法格式:plot(x,y ,fmt , scalex=True , scaley=true , data=None, label=None 等.....)实例:(1)(2)⼆、绘制柱形图或堆积图形使⽤bar()绘制柱形图或堆积柱形图bar()的语法格式有:bar(x, height , width=0.8, bottom=None, align='center',data=None, tick_label=None, xerr=None, yerr=None, error_kw=None)常⽤参数的含义:x:表⽰柱形的x坐标值height:表⽰柱形的⾼度width:表⽰柱形的宽度,默认为0.8bottom:表⽰柱形底座的y坐标值,默认为0align:表⽰柱形的对齐⽅式,有’center’和’edge’两个值,其中’center’表⽰将柱形刻度居中对齐;‘edge’表⽰将柱形的左边与刻度线对齐。
tick_label:表⽰柱形对应的刻度标签xerr,yerr:若未设为None,则需要为柱形图添加⽔平/ 垂直误差棒error_kw:表⽰误差棒的属性字典,字典的键对应errorbar()函数bar()函数会返回⼀个BarContainer类的对象。
import numpy as npimport matplotlib.pyplot as pltx=np.arange(5)y1=np.array([10,8,7,11,13])bar_width=0.4plt.bar(x,y1,tick_label=['a','b','c','d','e'],width=bar_width)plt.title("2020080603039")plt.show()(2)具有多组柱形的柱形图(3)通过给bottom参数传值的⽅式的⽅式控制柱形的y值三、绘制条形图或堆积条形图使⽤barh()绘制条形图或堆积条形图使⽤barh()函数的语法格式:barh(y, width, heigth=0.8, left=None, align='center', *)常⽤的参数的含义如下:y:表⽰条形的y坐标width:表⽰柱形的宽度,默认为0.8height:表⽰柱形的⾼度left:条形左侧的x坐标,默认为0align:表⽰柱形的对齐⽅式,有’center’和’edge’两个值,其中’center’表⽰将柱形刻度居中对齐;‘edge’表⽰将柱形的左边与刻度线对齐。
Python程序设计基础 09Matplotlib绘图库

按上条命令显示的位置,定位到配置文件matplotlibrc。
9.1 Matplotlib简介
15
9.1.4 中文显示问题
2. 用记事本程序打开matplotlibrc 配置文件 (1) 查找到下面这行: #font.sans-serif : Bitstream Vera Serif, New Century Schoolbook 将前面的注释符号#去掉, 并在字体列表前添加SimHei (黑体常规字体),即修改为: font.sans-serif : SimHei, Bitstream Vera Serif, New Century Schoolbook, (2) 设置坐标轴的负号正常显示,在配置文件中找到下面这行: #axes.unicode_minus : True 去掉注释符号#,同时将True改为False,即修改为: axes.unicode_minus : False
位置字符串
整数值
位置
位置字符串
整数值
位置
best
0 (默认值,自适应) 最佳
upper right
1
右上
upper left
2
lower right
4
center left
6
lower center
8
center
10
左上
lower left
3
左下
右下
right
5
右
左中
center right
7
右中
中下
方法二、修改matplotlib配置文件以显示中文(推荐此方法)。此方法可在本机上
一劳永逸解决中文的显示问题。步骤如下。
1. 定位matplotlibrc 配置文件的位置
- 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()