当前位置: 首页 > news >正文

【长文干货】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 的交互功能为图表添加个性化的下拉菜单。每个绘图库都有其独特的优势,根据任务需求选择合适的库,既能提高效率又能提供更好的用户体验。希望你在数据可视化的旅程中能够更得心应手!

相关文章:

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

文章目录 数据介绍Matplotlib散点图折线图柱形图直方图 Seaborn散点图折线图柱形图直方图 Bokeh散点图折线条形图交互式 Plotly基本组合优化:定制化下拉菜单 总结 数据介绍 在这个小费数据集中,我们记录了20世纪90年代初期餐厅顾客在两个半月内给出的小…...

软件工程--需求工程--学习笔记(超详细)

软件需求工程是软件开发周期的第一个阶段,也是关系到软件开发成败最关键阶段,本章讲解需求的基础知识和需求工程的关键活动。这些知识对于结构化方法、面向对象方法、面向服务方法等都是适用的 本文参考教材:沈备军老师的《软件工程原理》 目…...

TemplateHit中提取query和hit比对上序列索引的映射字典

template_hits(Sequence[TemplateHit]数据格式)来自结构数据库搜索结果 python运行hhsearch二进制命令的包装器类 映射索引计算:TemplateHit 中含有 indices_query,需要换算成在原始query序列中的index,hit 中indices_hit 需要减去最小index…...

富必达API:一站式无代码开发集成电商平台、CRM和营销系统

一站式无代码开发的连接解决方案 电子商务、客户服务系统以及其它商业应用,是现代企业运营的重要部分。然而,将这些系统进行有效的整合往往需要复杂的API开发,这对很多企业来说是一个巨大的挑战。富必达API以其一站式的无代码开发解决方案&a…...

聊聊接口最大并发处理数

文章目录 前言并发和并行并发(Concurrency)并行(Parallelism)思考一下 前言 生活在 2023 年的互联网时代下,又是在国内互联网越发内卷的背景下,相信大家面试找工作、网上学习查资料时都了解过互联网系统设…...

6.如何利用LIO-SAM生成可用于机器人/无人机导航的二维/三维栅格地图--以octomap为例

目录 1 octomap的安装 2 二维导航节点的建立及栅格地图的构建 3 三维栅格地图的建立 1 octomap的安装 这里采用命令安装: sudo apt install ros-melodic-octomap-msgs ros-melodic-octomap-ros ros-melodic-octomap-rviz-plugins ros-melodic-octomap-server 这样…...

【多传感器融合】BEVFusion: 激光雷达和视觉融合框架 NeurIPS 2022

前言 BEVFusion其实有两篇, 【1】BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework. NeurIPS 2022 | 北大&阿里提出 【2】BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation 2022 | MIT提出 本文先分…...

kafka中的常见问题处理

文章目录 1. 如何防⽌消息丢失2. 如何防⽌重复消费3. 如何做到消息的顺序消费4. 如何解决消息积压问题4.1 消息积压问题的出现4.2 消息积压的解决⽅案 5. 实现延时队列的效果5.1 应用场景5.2 具体方案 1. 如何防⽌消息丢失 ⽣产者:1)使⽤同步发送 2&…...

HarmonyOS(八)——@Styles装饰器:定义组件重用样式

前言 在前面我们介绍过Builder装饰器和BuilderParam装饰器。今天我们继续介绍另外一个装饰器——Styles装饰器:定义组件重用样式。 如果每个组件的样式都需要单独设置,在开发过程中会出现大量代码在进行重复样式设置,虽然可以复制粘贴&…...

手写VUE后台管理系统5 - 整合状态管理组件pinia

整合状态管理组件 安装整合创建实例挂载使用 pinia 是一个拥有组合式 API 的 Vue 状态管理库。 pinia 官方文档:https://pinia.vuejs.org/zh/introduction.html 安装 yarn add pinia整合 所有与状态相关的文件都放置于项目 src/store 目录下,方便管理 在…...

解决webpack打包生成gz格式css/js文件没法在nginx使用的问题--全网唯一正确

本文绝对是全网解决这个问题唯一正确的文章,没有之一! 很多人都说开启nginx gzip压缩,这些人完全是胡说八道!你们到底懂不懂叫gzip压缩啊?! 不信你就试试,如果css/js只有gz文件,ng…...

传统算法: Pygame 实现快速排序

使用 Pygame 模块实现了快速排序的动画演示。首先,它生成一个包含随机整数的数组,并通过 Pygame 在屏幕上绘制这个数组的条形图。接着,通过快速排序算法对数组进行排序,动画效果可视化每一步的排序过程。在排序的过程中,程序选择一个基准元素(pivot),将数组分成两部分,…...

HarmonyOS入门开发(三) 持久化存储Preferences

接入鸿蒙几天以来,发现各种和Android不一样的地方,今天来看一下Preferences存储 在Android中比如有ShardPreferences、Mmkv这些持久化存储方式,开发起来很方便,读取速度也很快,在鸿蒙里面也提供了对应的持久化存储方案…...

类和对象——(3)再识对象

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 你说那里有你的梦想,…...

【UGUI】实现背包的常用操作

1. 添加物品 首先,你需要一个包含物品信息的类,比如 InventoryItem: using UnityEngine;[CreateAssetMenu(fileName "NewInventoryItem", menuName "Inventory/Item")] public class InventoryItem : ScriptableObje…...

单机zk安装与zk四字命令

一、下载 Apache ZooKeeper可以在 Linux 系统中使用 wget 命令直接下载,官网地址 Apache ZooKeeper 二、解压 tar -zxvf apache-zookeeper-3.8.3-bin.tar.gz 进去解压的目录中, 进入到 zk 解压目录的 conf 目录,复制 zoo_sample.cfg 文件&a…...

matlab导入excel数据两种常见的方法

在MATLAB中导入Excel数据,你可以使用几种不同的方法。下面是两种常见的方法: 方法一:使用readtable函数 readtable函数允许你导入Excel文件中的数据,并将其存储为表格。 % 指定文件路径 filename C:\your\path\to\file.xlsx;%…...

华为全屋智能5.0,无为而“智”

在赖特西塔里埃森混凝土墙的中心壁龛里,一块铜牌上刻着一些英文,意思是“建筑的意义不是屋顶和墙,而是人们生活于其中的空间”。 这句话,取自老子《道德经》中的“凿户牖以为室,当其无,有室之用”。 《理想…...

Flask 实现Token认证机制

在Flask框架中,实现Token认证机制并不是一件复杂的事情。除了使用官方提供的flask_httpauth模块或者第三方模块flask-jwt,我们还可以考虑自己实现一个简易版的Token认证工具。自定义Token认证机制的本质是生成一个令牌(Token)&…...

MATLAB 和 Simulink 官方文档下载地址

MATLAB 官方文档中文版下载网址: https://ww2.mathworks.cn/help/pdf_doc/matlab/index.html 如图: MATLAB 官方文档英文版下载网址: https://ww2.mathworks.cn/help/pdf_doc/matlab/index.html?langen 如图: Simulink 官…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

Java入门学习详细版(一)

大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...