Python数据分析-matplotlib

news2024/12/24 2:29:50

目录

一、折线图:plt.plot()

1.1 plt.plot()基本用法

1.2 设置坐标轴范围:plt.axis([xmin,xmax,ymin,ymax])

1.3 plt.plot()绘制多个图形

1.4 linewidth设置线条宽度

1.5 使用plt.plot()的返回值设置线条属性

1.6 plt.setp()修改线条性质

1.7 对特殊点做标记

 ​编辑

二、子图:plt.subplot()

三、柱状图:plt.bar()

3.1 柱状图基本操作

3.2 添加其他属性

四、饼图:plt.pie()

4.1 饼图基本操作

4.2 添加其他属性

五、频率分布直方图:plt.hist()

5.1 直方图基本操作

5.2 添加其他属性

5.3 绘制双轴图

六、散点图:plt.scatter()

七、箱线图:plt.boxplot()

7.1 箱线图基本操作

7.2 添加其他属性

7.3 绘制多组数据的箱线图

八、相关系数矩阵图-热力图

8.1 相关系数矩阵图:pd.plotting.scatter_matrix()

8.2 seaborn库画热力图:sns.heatmap()


一、折线图:plt.plot()

1.1 plt.plot()基本用法

import matplotlib.pyplot as plt    #导入相关的包
import numpy as np
import pandas as pd

plt.plot([1,2,3,4])# 若只给入一个列表则会被当成y值,x值为0,1,2,3
plt.ylabel('y')  # x轴的名字
plt.xlabel('x')  # y轴的名字

plt.plot([1,2,3,4],[1,4,9,16]) # 若传入两个列表则第一个为x,第二个列表为y
# 默认情况下,matplotlib.pyplot 不会直接显示图像,只有调⽤ plt.show()函数时,图像才会显示出来
plt.show() 

 还可以指定折线的类型和颜色:

 以折现颜色为蓝色,类型为圆点为例:

plt.plot([1,2,3,4],[1,4,9,16],'bo')    #'b'蓝色 'o'圆点
plt.show()

1.2 设置坐标轴范围:plt.axis([xmin,xmax,ymin,ymax])

plt.plot([1,2,3,4],[1,4,9,16],'g*')
plt.axis([0,6,0,20]) # 设置坐标轴范围,x轴0-6,y轴0-20
plt.show()

1.3 plt.plot()绘制多个图形

t=np.arange(0,5,0.2)
plt.plot(t,t,'r--',t,t**2,'bs',t,t**3,'g^')
plt.show()

1.4 linewidth设置线条宽度

x=np.linspace(-np.pi,np.pi)
y=np.sin(x)
plt.plot(x,y,linewidth=1.0,color='r') # 通过关键字指定线条宽度,颜色
plt.show()

1.5 使用plt.plot()的返回值设置线条属性

line1,line2=plt.plot(x,y,'r-',x,y+1,'g-')#返回给两个变量,若前面是一个变量,将会给这个变量返回一个列表,而我们无法对列表进行操作
line1.set_antialiased(False)#对line1去掉抗锯齿
plt.show()

1.6 plt.setp()修改线条性质

line=plt.plot(x,y)
plt.setp(line,color='g',linewidth=4)

1.7 对特殊点做标记

import warnings
warnings.filterwarnings('ignore')#对警告进行忽略
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rcParams['font.sans-serif']=['SimHei']#字体设置为黑体,若不设置将无法显示中文
plt.rcParams['axes.unicode_minus']=False  #可以显示负号

df=pd.read_excel('movie_data3.xlsx')
data=df['年代'].value_counts()
data=data.sort_index()[:-3]  # 对index排序
data    # 查看数据

x=data.index
y=data.values

plt.plot(x,y,color='b')

plt.title('每年的电影数量',fontsize=20)     # 添加图像标题并设置标题大小
plt.xlabel('年代',fontsize=18)             # 添加x轴标题
plt.ylabel('电影数量',fontsize=18)

plt.show()

1888       2
1890       1
1892       1
1894       3
1895       8
        ... 
2011    1845
2012    2018
2013    1977
2014    1867
2015    1569
Name: 年代, Length: 125, dtype: int64

 

对特殊点做标记:

x=data.index
y=data.values

plt.figure(figsize=(10,6))
plt.plot(x,y,color='b')

plt.title('每年的电影数量',fontsize=20)
plt.xlabel('年代',fontsize=18)
plt.ylabel('电影数量',fontsize=18)

#每隔十年显示数字,初始值为1888
for a,b in zip(x[::10],y[::10]):
    plt.text(a,b+10,b,ha='center',va='bottom',fontsize=12)
    
#标记特殊点
plt.annotate('2012年达到最大值',xy=(2012,data[2012]),xytext=(2022,2100),arrowprops=dict(facecolor='black',edgecolor='red'))
# '2012年达到最大值':要填充的文本 ,xy=(2012,data[2012]):要标记的坐标点(箭头尖端的位置)  xytext=(2025,2100):箭头末端的位置
# arrowprops=dict(facecolor='black',edgecolor='red'):箭头的填充色和边框的颜色
plt.text(1980,1000,'电影数量开始快速增长')# 在指定位置放入文字,在坐标(1980,1000,)写电影数量开始快速增长
plt.show()

 

二、子图:plt.subplot()

plt.figure(figsize = (x,y)):生成x*y的图像

plt.subplot(x,y,z):生成x行y列的图像,将该图形放置在第z个图像上

def f(t):
    return np.exp(-t)*np.cos(2*np.pi*t)

t1=np.arange(0.0,5.0,0.1)
t2=np.arange(0.0,5.0,0.02)

plt.figure(figsize=(10,4)) # 生成10*4的图像
plt.subplot(2,1,1) # 生成两行一列的子图,将第一个图形放在第一个图像上
plt.plot(t1,f(t1),'bo',t2,f(t2),'k') # 绘制第一个图形

plt.subplot(2,1,2) # 将第二个图形放在第二个图像上
plt.plot(t2,np.cos(2*np.pi*t2),'r--') # 绘制第二个图形

def f(t):
    return np.exp(-t)*np.cos(2*np.pi*t)

t1=np.arange(0.0,5.0,0.1)
t2=np.arange(0.0,5.0,0.02)

plt.figure(figsize=(10,4)) # 生成10*4的图像
plt.subplot(2,2,1) # 生成两行一列的子图,将第一个图形放在第一个图像上
plt.plot(t1,f(t1),'bo',t2,f(t2),'k') # 绘制第一个图形

plt.subplot(2,2,2) # 将第二个图形放在第二个图像上
plt.plot(t2,np.cos(2*np.pi*t2),'r--') # 绘制第二个图形

plt.subplot(2,2,3) # 将第三个图形放在第三个图像上
plt.plot(t1,f(t1),'bo',t2,f(t2),'k') # 绘制第三个图形

plt.subplot(2,2,4) # 将第四个图形放在第四个图像上
plt.plot(t2,np.cos(2*np.pi*t2),'r--') # 绘制第四个图形

三、柱状图:plt.bar()

3.1 柱状图基本操作

以绘制各个国家的电影数量的柱状图为例:

首先导入数据:

import warnings
warnings.filterwarnings('ignore')#对警告进行忽略
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rcParams['font.sans-serif']=['SimHei']#字体设置为黑体,若不设置将无法显示中文
plt.rcParams['axes.unicode_minus']=False  #可以显示负号

df=pd.read_excel('movie_data3.xlsx') # 导入数据集

df[:5]看前五行的数据情况

然后取出要绘制成柱状图的数据:

data=df['产地'].value_counts()
data

接着绘制图形

x=data.index
y=data.values

plt.figure(figsize=(15,6)) # 图像大小为15*6
plt.bar(x,y,color='g')
plt.show()

 完整代码为:

import warnings
warnings.filterwarnings('ignore')#对警告进行忽略
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rcParams['font.sans-serif']=['SimHei']#字体设置为黑体,若不设置将无法显示中文
plt.rcParams['axes.unicode_minus']=False  #可以显示负号

df=pd.read_excel('movie_data3.xlsx') # 导入数据集

df[:5] # 查看数据集的前五行
data=df['产地'].value_counts()  # 提取出需要的数据
data    # 查看提取出的数据

# 绘制柱状图
x=data.index
y=data.values
plt.figure(figsize=(15,6))
plt.bar(x,y,color='g')
plt.show()

3.2 添加其他属性

x=data.index
y=data.values

plt.figure(figsize=(20,6))
plt.bar(x,y,color='g')
#加入标题
plt.title('各个国家或地区电影数量',fontsize=20)# fontsize:图表标题字体大小设置
plt.xlabel('国家或地区',fontsize=18)# 坐标轴标题字体大小设置
plt.ylabel('电影数量',fontsize=18)

plt.tick_params(labelsize=14) # 设置y轴字体大小
plt.xticks(rotation=90) # 将x轴字体旋转90°

# 'edge':将数据标签放在柱子的顶端; 'center':将数据标签放在柱子的中间
plt.bar_label(p,label_type = 'edge')

# 将数据标签放在柱子的中间也可如下操作:
# for a,b in zip(x,y):
#     plt.text(a,b+10,b,ha='center',va='bottom',fontsize=10)
# #a,b+10为要放置的位置,b为要放置的数字,center为将数字居中,bottom是将数字放在柱子的顶端 

plt.show()

四、饼图:plt.pie()

根据电影的时长绘制柱状图

4.1 饼图基本操作

import warnings
warnings.filterwarnings('ignore')#对警告进行忽略
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rcParams['font.sans-serif']=['SimHei']#字体设置为黑体,若不设置将无法显示中文
plt.rcParams['axes.unicode_minus']=False  #可以显示负号

df=pd.read_excel('movie_data3.xlsx')

# 因为这里的数据是连续的,需要对其作离散处理
data=pd.cut(df['时长'],[0,60,90,110,1000]).value_counts()#区间为0-60,60-90.....(做开右闭)
data

y=data.values  #饼图会自动进行归一化

plt.figure(figsize=(3,3))
plt.title('电影时长占比',fontsize=15)

plt.pie(y,labels=data.index,colors='bygr',autopct='%.2f%%')#labels:每个区间的名字  autopct:添加保留两位小数的标签
plt.show()

4.2 添加其他属性

添加图例,设置从y轴正向开始

y=data.values
y=y/sum(y)

plt.figure(figsize=(3,3))
plt.title('电影时长占比',fontsize=15)

plt.pie(y,labels=data.index,colors='bygr',autopct='%.1f%%',startangle=90)#startangle设置是从y轴正向开始
plt.legend()# 绘制图例
plt.show()

 

 

设置饼图外部字体颜色和内部颜色字体:

y=data.values
#饼图会自动进行归一化
#y=y/sum(y)

plt.figure(figsize=(6,6))
plt.title('电影时长占比',fontsize=15)

patches,l_text,p_text=plt.pie(y,labels=data.index,colors='bygr',autopct='%.1f%%',startangle=90)
# l_text,p_text:饼图外部字体颜色和饼图内部颜色字体设置
for i in p_text:
    i.set_size(15)#内部字体15号字体
    i.set_color('w')#白色
for i in l_text:
    i.set_size(15)
    i.set_color('r')

plt.legend()
plt.show()

五、频率分布直方图:plt.hist()

根据电影评分绘制频率分布直方图

5.1 直方图基本操作


import warnings
warnings.filterwarnings('ignore')#对警告进行忽略
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rcParams['font.sans-serif']=['SimHei']#字体设置为黑体,若不设置将无法显示中文
plt.rcParams['axes.unicode_minus']=False  #可以显示负号

df=pd.read_excel('movie_data3.xlsx') # 导入数据

plt.figure(figsize=(10,6)) 设置图像比例
plt.hist(df['评分'],bins=20)
plt.show()

5.2 添加其他属性

plt.figure(figsize=(10,6))
plt.hist(df['评分'],bins=20,edgecolor='black',alpha=0.5)
plt.show()

5.3 绘制双轴图

绘制电影评分的双轴图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
from scipy.stats import norm
import warnings
warnings.filterwarnings('ignore')#不报警告
plt.rcParams['font.sans-serif']=['SimHei']#设置字体为黑体
plt.rcParams['axes.unicode_minus']=False#设置负号能够正常显示


df=pd.read_excel('movie_data3.xlsx')

fig=plt.figure(figsize=(5,4))
ax1=fig.add_subplot(111)   #一行一列第一个图
n,bins,patches=ax1.hist(df['评分'],bins=100,color='m')

ax1.set_ylabel('电影数量',fontsize=15)
ax1.set_xlabel('评分',fontsize=15)
ax1.set_title('频率分布直方图',fontsize=20)

y=norm.pdf(bins,df['评分'].mean(),df['评分'].std())
ax2=ax1.twinx()
ax2.plot(bins,y,'b--')
ax2.set_ylabel('概率分布',fontsize=15)
plt.show()

六、散点图:plt.scatter()

绘制电影时长和评分的散点图:

import warnings
warnings.filterwarnings('ignore')#对警告进行忽略
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rcParams['font.sans-serif']=['SimHei']#字体设置为黑体,若不设置将无法显示中文
plt.rcParams['axes.unicode_minus']=False  #可以显示负号

df=pd.read_excel('movie_data3.xlsx')
x=df['时长']
y=df['评分']

plt.figure(figsize=(10,8))
plt.scatter(x,y) # 散点图绘制函数
plt.legend() # 图例
plt.title('电影时长与评分散点图',fontsize=20)
plt.xlabel('时长',fontsize=18) # x轴标题
plt.ylabel('评分',fontsize=18)
plt.show()

 选择原有数据的百分之一进行绘图:

#选择原有数据的百分之一
x=df['时长'][::100]
y=df['评分'][::100]

plt.figure(figsize=(10,6))
plt.scatter(x,y,color = 'c',marker = 'd')
plt.title('电影时长与评分散点图',fontsize=20)
plt.xlabel('时长',fontsize=18)
plt.ylabel('评分',fontsize=18)
plt.show()

七、箱线图:plt.boxplot()

 

绘制美国电影评分的箱线图:

7.1 箱线图基本操作

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')#不报警告
plt.rcParams['font.sans-serif']=['SimHei']#设置字体为黑体
plt.rcParams['axes.unicode_minus']=False#设置负号能够正常显示

df=pd.read_excel('movie_data3.xlsx')
data=df[df.产地=='美国']['评分'] # 产地为美国的电影评分数据

plt.figure(figsize=(5,4))
plt.boxplot(data,whis=2)
plt.title('美国电影评分',fontsize=15)
plt.show()

 

7.2 添加其他属性

data=df[df.产地=='美国']['评分']

plt.figure(figsize=(5,3))
plt.boxplot(data,whis=2,flierprops={'marker':'o','markerfacecolor':'r','color':'k'}
           ,patch_artist = True,boxprops = {'color':'b','facecolor':'#9999ff'})
#flierprops:设置异常值的形状为圆圈,填充色为红色,边框为黑色 
#patch_artist = true表示可以对箱体的颜色进行修改  boxprops:color修改箱体边框颜色,facecolor修改箱体颜色
plt.title('美国电影评分',fontsize=20)
plt.grid() # 设置网格线
plt.show()

7.3 绘制多组数据的箱线图

data1=df[df.产地=='中国大陆']['评分']
data2=df[df.产地=='中国香港']['评分']
data3=df[df.产地=='日本']['评分']
data4=df[df.产地=='英国']['评分']
data5=df[df.产地=='法国']['评分']

plt.figure(figsize=(8,5))
plt.boxplot([data1,data2,data3,data4,data5],labels=['中国大陆','中国香港','日本','英国','法国'],whis=2,vert=False) # vert:旋转图形
plt.title('电影评分箱线图',fontsize=20)

ax = plt.gca()
ax.patch.set_facecolor('gray') # 背景色调为灰色
ax.patch.set_alpha(0.3) # 调整背景透明度

plt.grid() # 设置网格线
plt.show()

八、相关系数矩阵图-热力图

8.1 相关系数矩阵图:pd.plotting.scatter_matrix()

① 主对角线为核密度估计的情况:diagonal='kde'

import warnings
warnings.filterwarnings('ignore')#对警告进行忽略
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.rcParams['font.sans-serif']=['SimHei']#字体设置为黑体,若不设置将无法显示中文
plt.rcParams['axes.unicode_minus']=False  #可以显示负号

df=pd.read_excel('movie_data3.xlsx')
data=df[['投票人数','评分','时长']]
data[:5] # 查看前五行

result=pd.plotting.scatter_matrix(data,diagonal='kde',color='k',alpha=0.3,figsize=(10,10))# diagonal='kde':主对角线为核密度估计

① 主对角线为直方图的情况:diagonal='hist'

result=pd.plotting.scatter_matrix(data[::100],diagonal='hist',color='k',alpha=0.3,figsize=(10,10)) # 主对角线为直方图

8.2 seaborn库画热力图:sns.heatmap()

import seaborn as sns

corr=data.corr()
corr=abs(corr) #求绝对值,让后续绘制的图不存在正负相关

fig=plt.figure(figsize=(5,4))
ax=fig.add_subplot()

ax=sns.heatmap(corr,vmax=1,vmin=0,annot=True)#vmax,vmin设置热力图范围  annot=True:显示每个格子上的参数

plt.xticks(fontsize=15)
plt.yticks(fontsize=15)

plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/58771.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试的几种方法

1、从是否关心内部结构来看 (1)白盒测试:又称为结构测试或逻辑驱动测试,是一种按照程序内部逻辑结构和编码结构,设计测试数据并完成测试的一种测试方法。 (2)黑盒测试:又称为数据驱动测试,把测试对象当做看不见的黑盒…

讲透金融风控建模全流程(附 Python 代码)

信贷风控是数据挖掘算法最成功的应用之一,这在于金融信贷行业的数据量很充足,需求场景清晰及丰富。 信贷风控简单来说就是判断一个人借了钱后面(如下个月的还款日)会不会按期还钱。更专业来说,信贷风控是还款能力及还…

SQL 汇总统计及GROUP BY

SQL 汇总统计1、汇总统计2、GROUT BY3、如何对分组统计的结果进行过滤? GROUP BY HAVING4、如何对分组统计的结果进行排序?GROUP BY ORDER BY5、介绍SELECT语句中各个子句的书写顺序6、备注: 上方用到的表1、汇总统计 介绍几个聚集函数 有…

电脑误删Path环境变量后前端如何重新配置所需变量

需求背景 : 当时公司需要我们安装一款软件 , 按照操作文档需要配置一下 Path 环境变量 , 但当时的云桌面操作系统是 window7系统 , 当时配置时并不知道新的变量配置时需要在前面一个的后面加 “ ; ” 来间隔开来…

【目的:windows下VS2017/2022使用MSVC编译GLFW库】

目的:windows下VS2017/2022使用MSVC编译GLFW库 环境: 系统:Win10 环境:VS2017 64bit步骤: 1.下载GLFW源码 官网链接https://www.glfw.org/download.html, 下载glfw的源码,解压到本地&#x…

考研数据结构大题整合_组二(TJP组)

考研数据结构大题整合 目录考研数据结构大题整合二、TJP组TJP组一TJP组二TJP组三二、TJP组 TJP组一 四、画图/计算/证明/算法分析(30分) (1)证明题(8分) 如果一棵树有n1个度为1的结点,n2个度为…

(四)Vue之数据绑定

文章目录数据绑定单向数据绑定双向数据绑定Vue学习目录上一篇:(三)Vue之模板语法 数据绑定 Vue中有2种数据绑定的方式: 1.单向绑定:数据只能从data流向页面。2.双向绑定:数据不仅能从data流向页面&#…

著名书画家、中国书画院院士李适中

著名书画家、中国书画院院士李适中 李适中 著名书画家、中国书画院院士 版画艺术家 文物复制专家 中国文物学会会员单位创始人 文化部科技进步奖获得者 艺术简历 李适中,1943年生,安徽颍上人,著名书画家、中国书画院院士。李适中先生师从著名…

Vue3+nodejs全栈项目(资金管理系统)——前端篇

文章目录创建项目项目初始化使用element-plus设置Register和404组件搭建element注册表单验证表单和按钮加载动画和消息提醒路由守卫和token过期处理配置请求拦截和响应拦截解析token并存储到vuex中设计顶部导航设置首页和个人信息设置左侧导航栏展示资金管理页面添加按钮编辑和…

返回当前系统串口名称

主要针对当前的usb转串口进行了穷举。 方便判断串口对应哪个设备。 返回串口名称 类对象,(包含了参考网址,以及对其进行了修改,防止出现蓝牙端口) using System; using System.Collections.Generic; using System.L…

VMware-KVM安装

目录 VMware-KVM安装 一、kvm虚拟化平台 KVM 网络管理(以NAT网卡为例[ens33]) VMware-KVM安装 一台Centos7、一个winSCP上传文件工具; 搭建KVM平台 一、kvm虚拟化平台 1 cat /etc/hosts ##查看主机…

ecology修改Reisn的JDK目录

修改resin运行JDK: 用文本编辑器打开resin/bin/resin.sh文件,将JAVA_HOME改为要设置的JDK路径。

springboot(spring)整合redis(集群)、细节、底层配置讲解

文章目录一.springboot整合redis.1.引入依赖.2.添加配置.3.使用封装对象举例二.细节讲解出现问题,堆外内存溢出解决方案,切换客户端三.补充原理.一.springboot整合redis. 1.引入依赖. <dependency><groupId>org.springframework.boot</groupId><artifact…

Spring中过滤器(Filter)和拦截器(Interceptor)的区别和联系解析

在我们日常的开发中&#xff0c;我们经常会用到Filter和Interceptor。有时同一个功能。Filter可以做&#xff0c;Interceptor也可以做。有时就需要考虑使用哪一个比较好。这篇文章主要介绍一下&#xff0c;二者的区别和联系。希望给大家进行选择的时候&#xff0c;提供一些帮助…

DSP/BIOS的基本介绍

DSP/BIOS的基本介绍 DSP/BIOS是一个简易的实时嵌入式操作系统&#xff0c;主要面向实时调度与同步、主机/目标系统通信&#xff0c;以及实时监测等应用&#xff0c;具有实时操作系统的诸多功能&#xff0c;如任务的调度管理、任务间的同步和通信、内存管理、实时时钟管理、中断…

(十)再探反向传播和神经网络优化

文章目录1.背景介绍2.神经网络的模型3.神经网络中的参数更新初探3.1随机查找取最优3.2局部随机查找参数更新3.3 沿着梯度反方向更新4.链式法则与反向传播5.梯度方向的参数更新策略6.学习率退火6.1学习率衰减策略基础6.2 二阶优化方法6.3自适应学习率方法参考资料欢迎访问个人网…

Java基础之接口与抽象类区别

Java基础之接口与抽象类区别一、Java基础之接口与抽象类二、抽象类和最终类三、Java移位运算符四、局部变量为什么要初始化一、Java基础之接口与抽象类 一个子类只能继承一个抽象类, 但能实现多个接口抽象类可以有构造方法, 接口没有构造方法抽象类可以有普通成员变量, 接口没…

minikube helm 安装 jenkins

文章目录1. 准备条件2. 安装 helm3. 部署 jenkins3.1 创建 namespace jenkins3.2 创建存储卷 jenkins-volume3.3 创建 service account & RBAC3.4 定制 jenkins-values.yml3.5 安装 jenkins3.6 登陆 jenkins“Jenkins是一个著名的可扩展开源 CI/CD 工具&#xff0c;用于自动…

手写数字识别Mnist数据集和读取代码分享

数据集下载 链接&#xff1a; https://pan.baidu.com/s/1qpzrSFhmyrdGmbSScN_ZXg?pwdd1ws 提取码&#xff1a;d1ws 数据集读取 from pathlib import Path import requests ​ DATA_PATH Path("data") PATH DATA_PATH / "mnist" ​ PATH.mkdir(parent…

Android Navigation基本使用

目录1. Navigation概述2. Navigation组成3. 设置环境4. 使用方法4.1. 创建导航图4.1.1. 具体操作4.2. 向Activity添加NavHost4.2.1. 通过 XML 添加4.2.2. 使用布局编辑器添加4.3. 在导航图中创建目的地4.3.1. 具体操作4.4. 连接目的地4.4.1. 具体操作4.5. 目的地之间的导航4.5.…