【长文干货】Python可视化教程

文章目录

    • 数据介绍
    • Matplotlib
      • 散点图
      • 折线图
      • 柱形图
      • 直方图
    • Seaborn
      • 散点图
      • 折线图
      • 柱形图
      • 直方图
    • Bokeh
      • 散点图
      • 折线
      • 条形图
      • 交互式
    • Plotly
      • 基本
      • 组合优化:定制化下拉菜单
    • 总结

数据介绍

在这个小费数据集中,我们记录了20世纪90年代初期餐厅顾客在两个半月内给出的小费情况。数据集包含了total_bill(总账单金额)、tip(小费金额)、sex(性别)、smoker(是否吸烟)、day(就餐日期)、time(就餐时间)、size(就餐人数)等六列信息。

数据下载:

链接: https://pan.baidu.com/s/1gnxI3CM7EVqCAzAGCbtSrg 提取码: 7it9 

读取数据:

import pandas as pd# 读取数据
data = pd.read_csv("tips.csv")# 展示前10行
display(data.head(10))

如下所示:
在这里插入图片描述

Matplotlib

Matplotlib是一个强大而灵活的低级数据可视化库,它建立在NumPy数组上。它提供了各种图形,如散点图、折线图、柱形图等。

要安装Matplotlib,可以使用以下命令:

pip install matplotlib

散点图

散点图用于观察变量之间的关系,可以使用Matplotlib的scatter()方法进行绘制。

import pandas as pd
import matplotlib.pyplot as plt# 数据
data = pd.read_csv("tips.csv")# 绘制天和小票关系
plt.scatter(data['day'], data['tip'])# 添加标题
plt.title("Scatter Plot")# 添加横纵坐标
plt.xlabel('Day')
plt.ylabel('Tip')plt.show()

如下所示:
在这里插入图片描述

如果想要增添颜色和调整点的大小,可以通过scatter()函数的c和s参数来实现。此外,colorbar()方法可用于显示颜色条。

折线图

折线图用于表示两个变量在不同轴上的关系,使用Matplotlib的plot()函数进行绘制。

import pandas as pd
import matplotlib.pyplot as plt# 读取数据
data = pd.read_csv("tips.csv")# 绘制小票和大小关系
plt.plot(data['tip'])
plt.plot(data['size'])#添加标题
plt.title("Scatter Plot")# 添加横纵坐标
plt.xlabel('Day')
plt.ylabel('Tip')plt.show()

如下:
在这里插入图片描述

柱形图

柱形图用于以矩形条的长度和高度表示数据类别。可以使用Matplotlib的bar()方法创建柱形图。


import pandas as pd
import matplotlib.pyplot as pltdata = pd.read_csv("tips.csv")plt.bar(data['day'], data['tip'])plt.title("Bar Chart")plt.xlabel('Day')
plt.ylabel('Tip')# Adding the legends
plt.show()

如下:
在这里插入图片描述

直方图

直方图用于以组的形式表示数据,可以使用Matplotlib的hist()函数进行绘制。

import pandas as pd
import matplotlib.pyplot as pltdata = pd.read_csv("tips.csv")
plt.hist(data['total_bill'])plt.title("Histogram")
plt.show()

如下:
在这里插入图片描述

Seaborn

Seaborn是建立在Matplotlib之上的高级接口,提供了漂亮的设计风格和调色板,使得绘制更具吸引力的图表变得简单。

要安装Seaborn,可以使用以下命令:

pip install seaborn

Seaborn的scatterplot()方法用于绘制散点图。

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pddata = pd.read_csv("tips.csv")# 绘制天和小费关系的散点图
sns.scatterplot(x='day', y='tip', data=data)plt.show()

如下:
在这里插入图片描述

散点图

与Matplotlib不同的是,在Seaborn中,使用hue参数可以轻松地按性别对每个点进行着色。

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pddata = pd.read_csv("tips.csv")# 根据性别绘制天和小费关系的散点图
sns.scatterplot(x='day', y='tip', data=data, hue='sex')plt.show()

如下:
在这里插入图片描述
你会发现,在使用 Matplotlib 时,如果你想根据性别给这个图的每个点着色,那会很困难。但是在散点图中,它可以在色调参数的帮助下完成。

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pddata = pd.read_csv("tips.csv")sns.scatterplot(x='day', y='tip', data=data,hue='sex')
plt.show()

如下:
在这里插入图片描述

折线图

Seaborn的lineplot()方法用于绘制折线图。

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pddata = pd.read_csv("tips.csv")sns.lineplot(x='day', y='tip', data=data)
plt.show()

如下:
在这里插入图片描述

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pddata = pd.read_csv("tips.csv")# 去除一个总额度列再绘制
sns.lineplot(data=data.drop(['total_bill'], axis=1))
plt.show()

如下:
在这里插入图片描述

柱形图

Seaborn的barplot()方法用于绘制柱形图。

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pddata = pd.read_csv("tips.csv")sns.barplot(x='day',y='tip', data=data, hue='sex')plt.show()

如下:
在这里插入图片描述

直方图

Seaborn 中的直方图可以使用 histplot() 函数绘制。

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pddata = pd.read_csv("tips.csv")sns.histplot(x='total_bill', data=data, kde=True, hue='sex')plt.show()

如下:
在这里插入图片描述
在使用Seaborn时,相比于Matplotlib,我们可以更轻松地自定义图表。而且,Seaborn是基于Matplotlib构建的,因此在使用Seaborn时仍然可以利用Matplotlib的自定义函数。

Bokeh

Bokeh以其交互式图表而著称,使用HTML和JavaScript渲染图形,提供了优雅、简洁且高度交互性的现代图形。
在这里插入图片描述

要安装Bokeh,可以使用以下命令:

pip install bokeh

散点图

Bokeh的scatter()方法用于绘制散点图。

from bokeh.plotting import figure, output_file, show
from bokeh.palettes import magma
import pandas as pd#初始化
graph = figure(title = "Bokeh Scatter Graph")# 读取
data = pd.read_csv("tips.csv")color = magma(256)# 绘制
graph.scatter(data['total_bill'], data['tip'], color=color)# 显示
show(graph)

如下:
在这里插入图片描述

折线

from bokeh.plotting import figure, output_file, show
import pandas as pdgraph = figure(title = "Bokeh Bar Chart")data = pd.read_csv("tips.csv")# tip column
df = data['tip'].value_counts()# 绘制
graph.line(df, data['tip'])#展示
show(graph)

如下:
在这里插入图片描述

条形图

Bokeh中的条形图可以使用vbar()方法创建。

from bokeh.plotting import figure, output_file, show
import pandas as pdgraph = figure(title = "Bokeh Bar Chart")data = pd.read_csv("tips.csv")graph.vbar(data['total_bill'], top=data['tip'])show(graph)

如下:
在这里插入图片描述

交互式

Bokeh提供了交互式图表的功能,可以使用GUI元素如按钮、滑块、复选框等。

from bokeh.plotting import figure, output_file, show
import pandas as pd# 初始化
graph = figure(title = "Bokeh Bar Chart")# 数据读取
data = pd.read_csv("tips.csv")# 绘制
graph.vbar(data['total_bill'], top=data['tip'], legend_label = "Bill VS Tips", color='green')graph.vbar(data['tip'], top=data['size'], legend_label = "Tips VS Size", color='red')graph.legend.click_policy = "hide"# 展示
show(graph)

如下:

在这里插入图片描述

例如:

from bokeh.io import show
from bokeh.models import CustomJS, Sliderslider = Slider(start=1, end=20, value=1, step=2, title="Slider")slider.js_on_change("value", CustomJS(code="""console.log('slider: value=' + this.value, this.toString())
"""))show(slider)

如下:
在这里插入图片描述

Plotly

Plotly是一个交互式可视化库,提供基于Web的图表,可以用于创建漂亮的图表和仪表板。

要安装Plotly,可以使用以下命令:

pip install plotly

基本

使用Plotly Express库中的scatter()方法绘制散点图。


import plotly.express as px
import pandas as pddata = pd.read_csv("tips.csv")fig = px.scatter(data, x="day", y="tip", color='sex')# showing the plot
fig.show()

如下:
在这里插入图片描述
使用Plotly Express库中的line()方法绘制折线图。

import plotly.express as px
import pandas as pddata = pd.read_csv("tips.csv")fig = px.line(data, y='tip', color='sex')fig.show()

如下:
在这里插入图片描述
使用Plotly Express库中的bar()方法绘制柱形图。

import plotly.express as px
import pandas as pddata = pd.read_csv("tips.csv")fig = px.bar(data, x='day', y='tip', color='sex')fig.show()

如下:
在这里插入图片描述
使用Plotly Express库中的histogram()方法绘制直方图。


import plotly.express as px
import pandas as pd# reading the database
data = pd.read_csv("tips.csv")# plotting the scatter chart
fig = px.histogram(data, x='total_bill', color='sex')# showing the plot
fig.show()

如下:
在这里插入图片描述

组合优化:定制化下拉菜单

在数据可视化中,展示图表不仅需要清晰的数据呈现,还需要用户友好的交互体验。本文将介绍如何通过使用 Plotly 中的 updatemenus 功能,为图表添加定制化下拉菜单,让用户能够灵活切换图表类型。

# 导入必要的库
import plotly.graph_objects as go
import pandas as pd# 读取数据
data = pd.read_csv("tips.csv")# 创建初始散点图
plot = go.Figure(data=[go.Scatter(x=data['day'],y=data['tip'],mode='markers',)
])# 定义下拉菜单选项
menu_options = [dict(args=["type", "scatter"],label="散点图",method="restyle"),dict(args=["type", "bar"],label="柱状图",method="restyle")
]# 添加下拉菜单
plot.update_layout(updatemenus=[dict(buttons=menu_options,direction="down",),]
)# 展示图表
plot.show()

如下所示:
在这里插入图片描述
通过这个简单的示例,你可以在图表上方看到一个下拉菜单,用于在散点图和柱状图之间切换。这种交互方式使得用户能够更直观地探索数据。

同样地,我们可以应用相同的思想来优化时间序列数据的展示:

# 创建初始折线图
plot = go.Figure(data=[go.Scatter(y=data['tip'],mode='lines',)
])# 定义时间序列下拉菜单选项
time_menu_options = [dict(count=1,step="day",stepmode="backward")
]# 更新布局,添加时间序列下拉菜单
plot.update_layout(xaxis=dict(rangeselector=dict(buttons=time_menu_options),rangeslider=dict(visible=True),)
)# 展示图表
plot.show()

如下:
在这里插入图片描述
这样,你就能够以更有层次感的方式呈现时间序列数据。

总结

通过本文学习,你不仅了解了如何使用 Python 中不同的绘图库(Matplotlib、Seaborn、Bokeh 和 Plotly)来展示提示数据集,还掌握了如何通过 Plotly 的交互功能为图表添加个性化的下拉菜单。每个绘图库都有其独特的优势,根据任务需求选择合适的库,既能提高效率又能提供更好的用户体验。希望你在数据可视化的旅程中能够更得心应手!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#学习-9课时

P11 IF判断(上) P11 IF判断(中 ) bool→true or false; 为:变量赋值 为:等于(判断) !为:≠ 优先级:大于 using System; using System.Collections.Generic; using System.Linq; using System.Text; usin…

上手 Promethus - 开源监控、报警工具包

名词解释 Promethus 是什么 开源的【系统监控和警报】工具包 专注于: 1)可靠的实时监控 2)收集时间序列数据 3)提供强大的查询语言(PromQL),用于分析这些数据 功能: 1&#xff0…

第三方实验室LIMS管理系统源码,asp.net LIMS源码

LIMS实验室信息管理系统源码 LIMS系统的功能根据实验室的规模和任务而有所不同,其系统主要功能包括:系统维护、基础数据编码管理,样品管理、数据管理、报告管理、报表打印、实验材料管理、设备管理等。它可以取代传统的手工管理模式而给检测实验室带来巨…

[跑代码]BK-SDM: A Lightweight, Fast, and Cheap Version of Stable Diffusion

Installation(下载代码-装环境) conda create -n bk-sdm python3.8 conda activate bk-sdm git clone https://github.com/Nota-NetsPresso/BK-SDM.git cd BK-SDM pip install -r requirements.txt Note on the torch versions weve used torch 1.13.1 for MS-COCO evaluation…

Xilinx Zynq-7000系列FPGA实现视频拼接显示,提供两套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐FPGA图像处理方案FPGA视频拼接叠加融合方案推荐 3、设计思路详解Video Mixer介绍 4、工程代码1:2路视频拼接 HDMI 输出PL 端 FPGA 逻辑设计PS 端 SDK 软件设计 5、工程代码2:4路视频拼接 HDMI 输出PL 端 FPGA 逻辑设…

maven 基础

maven常用命令 clean &#xff1a;清理 compile&#xff1a;编译 test&#xff1a;测试 package&#xff1a;打包 install&#xff1a;安装 maven坐标书写规范 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</ar…

Javaweb之Vue组件库Element案例的详细解析

4.4.3.3 顶部标题 对于顶部&#xff0c;我们需要实现的效果如下图所示&#xff1a; 所以我们需要修改顶部的文本内容&#xff0c;并且提供背景色的css样式&#xff0c;具体代码如下&#xff1a; <el-header style"font-size:40px;background-color: rgb(238, 241, 24…

【腾讯云 HAI域探秘】借助高性能应用HAI——我也能使用【stable diffusion】制作高级视频封面了

目录 高性能应用服务HAI_GPU云服务器的申请与服务创建 官网地址&#xff1a;高性能应用服务HAI_GPU云服务器_腾讯云 通过高性能应用服务HAI——创建【stable diffusion】 WebUI效果&#xff1a; 服务器后台效果&#xff1a; stable-diffusion服务测试 启动接口服务 配置…

模拟算法【3】——1419.数青蛙

文章目录 &#x1f365;1. 题目&#x1f96e;2. 算法原理&#x1f361;3. 代码实现 &#x1f365;1. 题目 题目链接&#xff1a;1419. 数青蛙 - 力扣&#xff08;LeetCode&#xff09; 给你一个字符串 croakOfFrogs&#xff0c;它表示不同青蛙发出的蛙鸣声&#xff08;字符串 &…

17. Python 数据库操作之MySQL和SQLite实例

目录 1. 简介2. 使用PyMySQL2. 使用SQLite 1. 简介 数据库种类繁多&#xff0c;每种数据库的对外接口实现各不相同&#xff0c;为了方便对数据库进行统一的操作&#xff0c;大部分编程语言都提供了标准化的数据库接口&#xff0c;用户不需要了解每种数据的接口实现细节&#x…

Docker篇之docker部署harbor仓库

一、首先需要安装docker step1&#xff1a;安装docker #1、安装yun源 yum install -y yum-utils #2、配置yum源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 如果上面源不稳定的话&#xff0c;更换为下列的aliyun源 yu…

SpringBoot 整合 Neo4j 实战(头歌)

文章目录 第1关&#xff1a;认识 Spring DATA Neo4J任务描述相关知识Spring DATA Neo4J - 简介Spring JDBC / Spring ORM 模块的缺点&#xff1a;Spring 数据模块的优点&#xff1a;Spring 数据模块功能&#xff1a;Spring DATA Neo4j 模块的附加功能&#xff1a; Spring DATA …

Modbus RTU协议及modbus库函数使用

一、与Modbus TCP的区别 在一般工业场景使用modbus RTU的场景还是更多一些&#xff0c;modbus RTU基于串行协议进行收发数据&#xff0c;包括RS232/485等工业总线协议。 与modbus TCP不同的是RTU没有报文头MBAP字段&#xff0c;但是在尾部增加了两个CRC检验字节&#xff08;CRC…

【Web】UUCTF 2022 新生赛 个人复现

目录 ①websign ②ez_rce ③ez_upload ④ez_unser ⑤ezsql ⑥ezpop ⑦funmd5 ⑧phonecode ⑨ezrce ①websign 右键打不开&#xff0c;直接抓包发包看源码 ②ez_rce “反引号” 在PHP中会被当作SHELL命令执行 ?codeprintf(l\s /); ?codeprintf(ta\c /ffffffffffl…

特征变换1

编译工具&#xff1a;PyCharm 有些编译工具不用写print可以直接将数据打印出来&#xff0c;pycharm需要写print才会打印出来。 概念 1.特征类型 特征的类型&#xff1a;“离散型”和“连续型” 机器学习算法对特征的类型是有要求的&#xff0c;不是任意类型的特征都可以随意…

Spring RabbitMQ那些事(2-两种方式实现延时消息订阅)

目录 一、序言二、死信交换机和消息TTL实现延迟消息1、死信队列介绍2、代码示例(1) 死信交换机配置(2) 消息生产者(3) 消息消费者 3、测试用例 三、延迟消息交换机实现延迟消息1、安装延时消息插件2、代码示例(1) 延时消息交换机配置(2) 消息生产者(3) 消息消费者 3、测试用例 …

set和map + multiset和multimap(使用+封装(RBTree))

set和map 前言一、使用1. set(1)、模板参数列表(2)、常见构造(3)、find和count(4)、insert和erase(5)、iterator(6)、lower_bound和upper_bound 2. multiset3. map(1)、模板参数列表(2)、构造(3)、modifiers和operations(4)、operator[] 4. multimap 二、封装RBTree迭代器原理R…

科技与教育:未来教育的新趋势

在21世纪&#xff0c;科技的快速发展正在深刻地改变教育行业。从在线学习平台到虚拟现实教室&#xff0c;科技为教育带来了革命性的变化。本文将探讨科技如何影响现代教育&#xff0c;并预测未来教育的发展趋势。 一、科技在教育中的应用 在线学习平台&#xff1a;通过平台如C…

JSON 与 FastJSON

JSON 与 FastJSON JSON JavaScript Object Notation&#xff08;JavaScript 对象表示法&#xff09;是目前最常用的执行对象序列化的方式。 虽然 json 最初是为了在 JavaScript 语言中使用的&#xff0c;但实际上 json 本身跟语言没有任何关系&#xff0c;各种编程语言都可以使…

微服务--08--Seata XA模式 AT模式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 分布式事务Seata 1.XA模式1.1.两阶段提交1.2.Seata的XA模型1.3.优缺点 AT模式2.1.Seata的AT模型2.2.流程梳理2.3.AT与XA的区别 分布式事务 > 事务–01—CAP理论…