【长文干货】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.mzph.cn/news/182689.shtml

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

相关文章

【机器学习 | 可视化】回归可视化方案

🤵‍♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…

LESS的叶绿素荧光模拟实现——任意波段荧光模拟

目录 前言一、任意波段荧光模拟的实现二、需要注意的输入参数 前言 此专栏默认您对LESS (LargE-Scale remote sensing data and image Simulation framework) 模型和叶绿素荧光(Sun-Induced chlorophyll Fluorescence, SIF)有一定的了解。当然,您也可以在这里下载中…

Kubernetes

Kubernetes Docker的安装Docker安装:安装docker依赖环境配置国内docker-ce的yum源(这里采用的是阿里云)安装docker。插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自…

C++基础 -17-继承中 基类与派生构造和析构调用顺序

首先声明 定义了派生类会同时调用基类和派生的构造函数 定义了派生类会同时调用基类和派生的析构函数 那么顺序如何如下图 构造由上往下顺序执行 析构则完全相反 #include "iostream"using namespace std;class base {public:base(){cout << "base-bui…

orvibo旗下的VS30ZW网关分析之二:版本回退方法

概述 上接第一篇: orvibo旗下的VS30ZW网关分析之一-CSDN博客 此产品VS30ZW支持openwrt的页面,可以版本回退进行刷机。 openwrt固件下载: 固件名称:openwrt-VS30ZW-mt7628.bin 链接地址:https://download.csdn.net/download/leekwen/88579427 版本回退方法: 1、同…

多模态大模型总结2(主要2023年)

LLaVA-V1&#xff08;2023/04&#xff09; 论文&#xff1a;Visual Instruction Tuning 网络结构 如下图 所示为 LLaVA-v1 的模型结构&#xff0c;可以看出其简化了很多&#xff0c;但整体来说还是由三个组件构成&#xff1a; Vision Encoder&#xff1a;和 Flamingo 模型的 V…

微信小程序获取手机号上限,怎么处理比较省钱

微信新规 微信2023年改了规则&#xff0c;原本免费的小程序获取手机号&#xff0c;现在如果要获取要1分钱一条。 有些小程序的用户非常恐怖&#xff0c; 比如一些工具类的&#xff0c; 群发类的。如果进入小程序就必须要获取小程序&#xff0c;就像是无底洞&#xff0c;让运营…

【古月居《ros入门21讲》学习笔记】14_参数的使用与编程方法

目录 说明&#xff1a; 1. 参数模型&#xff08;全局字典&#xff09; 2. 实现过程&#xff08;C&#xff09; 创建功能包 参数命令行的使用 YAML参数文件 rosparam命令 使用示例 编程方法&#xff08;C&#xff09; 配置代码编译规则 编译并运行 编译 运行 3. 实…

【C++笔记】红黑树的简易实现

【C笔记】红黑树的简易实现 一、什么是红黑树以及红黑树好在哪里1.1、什么是红黑树1.2、红黑树比AVL树好在哪里&#xff1f; 二、红黑树的模拟实现2.1、红黑树的插入2.2、仅变色调整2.3、变色单旋调整2.4、变色双旋调整 一、什么是红黑树以及红黑树好在哪里 1.1、什么是红黑树…

Docker容器网络模式

1.none网络 1&#xff09;使用默认网络模式创建一个BusyBox容器&#xff0c;用于对比none网络模式&#xff1b; 测试网络&#xff0c;可以正常连接外网。 2&#xff09;再创建一个none网络模式的BusyBox容器&#xff1b; 测试网络连接&#xff0c;无法连接外网。 总结&#x…

深入了解Spring Boot中@Async注解的8大坑点

文章目录 1. 缺少EnableAsync注解2. 异步方法需独立3. 不同的异步方法间无法相互调用4. 返回值为void的异步方法无法捕获异常5. 外部无法直接调用带有Async注解的方法6. Async方法不适用于private方法7. 缺失异步线程池配置8. 异步方法与事务的兼容结语 &#x1f389;深入了解S…

Ros报错:The Plugin for class ‘jsk_rviz_plugin/Plotter2D‘ failed to load

一般出现这种情况&#xff0c;是提醒Ros缺少某种库&#xff1a; 图中显示的错误是说明少了jsk_rviz_plugins库&#xff0c;他是一个提供原始rviz插件的包。 解决办法是安装相应的库与插件&#xff1a; #根据自己ROS的版本选择相应的指令 # ubuntu20.04:noetic sudo apt-get i…

RabbitMQ消息的应答

消息的应答机制 消费者完成一个任务可能需要一段时间&#xff0c;如果其中一个消费者处理一个长的任务并仅只完成了部分突然它挂掉了&#xff0c;会发生什么情况。RabbitMQ 一旦向消费者传递了一条消息&#xff0c;便立即将该消息标记为删除。在这种情况下&#xff0c;突然有个…

计算机视觉:使用dlib实现人脸检测

1 dlib介绍 Dlib是一个广泛使用的开源库&#xff0c;在计算机视觉和机器学习领域具有重要影响。它是由Davis King在2002年开发&#xff0c;主要用C语言编写&#xff0c;但也提供了Python接口。Dlib结合了高效的算法和易用性&#xff0c;使其成为学术界和工业界的热门选择。 1.…

SpringBoot项目启动后自动停止了?

1 现象 2023-11-22T09:05:13.36108:00 DEBUG 17521 --- [ main] o.s.b.a.ApplicationAvailabilityBean : Application availability state LivenessState changed to CORRECT 2023-11-22T09:05:13.36208:00 DEBUG 17521 --- [ main] o.s.b.a.Applicat…

一文1000字彻底搞懂Web测试与App测试的区别

总结分享一些项目需要结合Web测试和App测试的工作经验给大家&#xff1a; 从功能测试区分&#xff0c;Web测试与App测试在测试用例设计和测试流程上没什么区别。 而两者的主要区别体现在如下几个方面&#xff1a; 1 系统结构方面 Web项目&#xff0c;B/S架构&#xff0c;基…

Android中实现RecyclerView,并对item及其多个子控件的点击事件监听

目录 背景 实现RecyclerView 第一步、 新建item的xml 第二步、在activity的布局中引入 RecyclerView 第三步、新建一个adapter 第四步、在activity中初始化绑定adapter即可 实现item及其多个子组件点击事件监听 第一步、 适配器中创建监听对象 第二步、适配器中绑定监听…

uniapp ios 授权弹窗 uniapp弹出框怎么实现

新版本的信息弹窗组件 可以弹出很多条信息&#xff0c;并单独控制消失时间、点击消失。 用循环来生成很多个弹窗&#xff0c;用this.$refs来传值&#xff0c;并添加数组。 1.布局 2.js 具体流程。需要一个弹窗&#xff0c;基本信息传入组件&#xff0c;处理后添加入数组&am…

智能优化算法应用:基于闪电搜索算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于闪电搜索算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于闪电搜索算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.闪电搜索算法4.实验参数设定5.算法结果6.参考…

【C++】异常处理 ① ( 异常概念引入 | 抛出异常语法 | 捕获异常语法 | 异常捕获流程 | 异常处理代码示例 )

文章目录 一、异常处理1、异常概念引入2、抛出异常语法3、捕获异常语法4、异常捕获流程 二、异常处理代码示例1、错误代码示例 - 抛出异常 / 不捕获异常2、正确代码示例 - 抛出异常 / 捕获异常3、正确代码示例 - 抛出异常 / 捕获异常不处理继续抛出异常 一、异常处理 1、异常概…