python常见绘图及代码

 

一、引言

 

在数据驱动的时代,将数据转化为直观的图形对于理解数据、发现模式和传达信息至关重要。Python作为一种功能强大且广受欢迎的编程语言,拥有丰富的绘图库,能满足不同场景下的数据可视化需求。本文将深入探讨Python中常见的绘图程序,包括Matplotlib、Seaborn、Plotly和Bokeh,并提供详细的代码示例。

 

二、Matplotlib:基础绘图的基石

 

2.1 简单折线图

 

Matplotlib是Python中最常用的绘图库之一,其 pyplot 子库提供了类似MATLAB的绘图接口。绘制简单折线图的代码如下:

 

import matplotlib.pyplot as plt

import numpy as np

 

x = np.linspace(0, 10, 100)

y = np.sin(x)

 

plt.plot(x, y)

plt.xlabel('X轴')

plt.ylabel('Y轴')

plt.title('正弦函数')

plt.show()

 

 

在这段代码中, np.linspace(0, 10, 100) 生成了从0到10的100个等间距数据点, np.sin(x) 计算了这些点的正弦值。 plt.plot(x, y) 绘制折线图, plt.xlabel 、 plt.ylabel 和 plt.title 分别设置坐标轴标签和标题, plt.show() 显示图形。

 

2.2 散点图

 

绘制散点图只需将 plot 函数替换为 scatter 函数:

 

import matplotlib.pyplot as plt

import numpy as np

 

x = np.random.randn(100)

y = np.random.randn(100)

 

plt.scatter(x, y)

plt.xlabel('X值')

plt.ylabel('Y值')

plt.title('随机散点图')

plt.show()

 

 

这里 np.random.randn(100) 生成100个服从标准正态分布的随机数, plt.scatter(x, y) 将这些点绘制成散点图。

 

2.3 柱状图

 

绘制柱状图使用 bar 函数:

 

import matplotlib.pyplot as plt

import numpy as np

 

categories = ['A', 'B', 'C', 'D']

values = [25, 40, 15, 30]

 

plt.bar(categories, values)

plt.xlabel('类别')

plt.ylabel('数值')

plt.title('柱状图')

plt.show()

 

 

 categories 列表定义了柱状图的类别, values 列表定义了每个类别的数值, plt.bar(categories, values) 绘制柱状图。

 

三、Seaborn:统计绘图的利器

 

3.1 分布图

 

Seaborn建立在Matplotlib之上,提供了更高级的统计绘图功能。绘制单变量分布图可以使用 distplot 函数:

 

import seaborn as sns

import numpy as np

import matplotlib.pyplot as plt

 

data = np.random.randn(100)

sns.distplot(data)

plt.title('正态分布')

plt.show()

 

 

 np.random.randn(100) 生成100个标准正态分布随机数, sns.distplot(data) 绘制该数据的分布图,包括直方图和核密度估计曲线。

 

3.2 箱线图

 

绘制箱线图使用 boxplot 函数,可用于比较不同组数据的分布:

 

import seaborn as sns

import pandas as pd

import matplotlib.pyplot as plt

 

data = {

    '组A': np.random.randn(50),

    '组B': np.random.randn(50) + 1,

    '组C': np.random.randn(50) - 1

}

df = pd.DataFrame(data)

 

sns.boxplot(data = df)

plt.title('箱线图')

plt.show()

 

 

这里创建了一个包含三组数据的DataFrame, sns.boxplot(data = df) 绘制箱线图,展示每组数据的分布特征。

 

3.3 热力图

 

热力图常用于展示数据矩阵中数值的分布,使用 heatmap 函数:

 

import seaborn as sns

import numpy as np

import matplotlib.pyplot as plt

 

data = np.random.rand(5, 5)

sns.heatmap(data, annot = True, cmap='YlGnBu')

plt.title('热力图')

plt.show()

 

 

 np.random.rand(5, 5) 生成一个5x5的随机数矩阵, sns.heatmap(data, annot = True, cmap='YlGnBu') 绘制热力图, annot = True 表示在每个方格中显示数值, cmap='YlGnBu' 指定颜色映射。

 

四、Plotly:交互式绘图的先锋

 

4.1 交互式折线图

 

Plotly可以创建交互式的Web图形。绘制交互式折线图的代码如下:

 

import plotly.express as px

import numpy as np

 

x = np.linspace(0, 10, 100)

y = np.sin(x)

 

fig = px.line(x=x, y=y, title='交互式正弦函数')

fig.show()

 

 

 px.line(x=x, y=y, title='交互式正弦函数') 创建一个交互式折线图对象, fig.show() 在默认浏览器中显示图形,用户可以进行缩放、平移等交互操作。

 

4.2 交互式散点图

 

绘制交互式散点图:

 

import plotly.express as px

import numpy as np

 

x = np.random.randn(100)

y = np.random.randn(100)

 

fig = px.scatter(x=x, y=y, title='交互式散点图')

fig.show()

 

 

同样, px.scatter(x=x, y=y, title='交互式散点图') 创建交互式散点图,用户可通过交互探索数据。

 

4.3 3D 图形

 

Plotly绘制3D图形也很方便,例如绘制3D散点图:

 

import plotly.express as px

import numpy as np

 

x = np.random.randn(100)

y = np.random.randn(100)

z = np.random.randn(100)

 

fig = px.scatter_3d(x=x, y=y, z=z, title='3D 散点图')

fig.show()

 

 

 px.scatter_3d(x=x, y=y, z=z, title='3D 散点图') 创建一个3D散点图,能以三维视角展示数据关系。

 

五、Bokeh:Web 可视化的能手

 

5.1 简单折线图

 

Bokeh用于创建交互式Web可视化。绘制简单折线图:

 

from bokeh.plotting import figure, show

from bokeh.models import ColumnDataSource

import numpy as np

 

x = np.linspace(0, 10, 100)

y = np.sin(x)

source = ColumnDataSource(data=dict(x=x, y=y))

 

p = figure(title='正弦函数', x_axis_label='X', y_axis_label='Y')

p.line('x', 'y', source = source)

show(p)

 

 

这里使用 ColumnDataSource 来管理数据, figure 创建绘图对象, p.line('x', 'y', source = source) 绘制折线, show(p) 在浏览器中显示图形。

 

5.2 交互式柱状图

 

绘制交互式柱状图:

 

from bokeh.plotting import figure, show

from bokeh.models import ColumnDataSource

import numpy as np

 

categories = ['A', 'B', 'C', 'D']

values = [25, 40, 15, 30]

source = ColumnDataSource(data=dict(categories=categories, values=values))

 

p = figure(x_range=categories, title='柱状图', x_axis_label='类别', y_axis_label='数值')

p.vbar(x='categories', top='values', width=0.9, source = source)

show(p)

 

 

 p.vbar 绘制垂直柱状图,通过 ColumnDataSource 实现数据绑定,使图形具有交互性。

 

5.3 交互式地图

 

Bokeh还能绘制交互式地图,例如:

 

from bokeh.plotting import figure, show

from bokeh.models import GeoJSONDataSource, LinearColorMapper, ColorBar

from bokeh.palettes import Viridis6

import geopandas as gpd

 

# 读取地理数据

gdf = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))

gdf = gdf[gdf['continent'] == 'Europe']

geosource = GeoJSONDataSource(geojson = gdf.to_json())

 

# 颜色映射

color_mapper = LinearColorMapper(palette = Viridis6, low = gdf['pop_est'].min(), high = gdf['pop_est'].max())

 

p = figure(title='欧洲人口分布', plot_width = 800, plot_height = 500, toolbar_location = None, tools = '')

p.patches('xs', 'ys', source = geosource, fill_color = {'field' :'pop_est', 'transform' : color_mapper}, line_color = 'black', line_width = 0.25)

 

color_bar = ColorBar(color_mapper=color_mapper, label_standoff=8, location=(0,0))

p.add_layout(color_bar, 'right')

 

show(p)

 

 

此代码使用地理数据绘制欧洲人口分布的交互式地图,通过颜色映射展示人口估计值。

 

六、总结

 

Python的绘图库为数据可视化提供了丰富的选择。Matplotlib适合基础绘图,Seaborn专注于统计绘图,Plotly和Bokeh则擅长创建交互式Web图形。根据具体需求选择合适的库,能更有效地将数据转化为有价值的可视化信息。通过不断实践和探索这些库的功能,我们可以创建出更具表现力和洞察力的数据可视化作品,助力数据分析、科学研究和信息传达等多个领域的工作。

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

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

相关文章

GWAS数据和软件下载

这部分主要是数据获取,以及软件配置方法。 一、配套数据和代码 数据和代码目前在不断的更新,最新的教程可以私信,我通过后手动发送最新版的pdf和数据代码。发送的压缩包,有电子版的pdf和数据下载链接,里面是最新的百度网盘的地址,下载到本地即可。然后根据pdf教程,结合配套的…

【pytorch-lightning】架构一览

pytorch-lightning是基于pytorch的一个套壳项目,适配pytorch的版本同步更新速度很快。 它将训练的几个主要流程模块化,减少重复工作,同时让支持分布式训练,不同平台的训练迁移变得更加简单。 官网链接

Uniapp Android 本地离线打包(详细流程)

一、简介 App 离线 SDK 暂时不支持 Kotlin,未来不清楚。 uniapp 提供了 云打包 与 本地打包 两种方案,云打包 需要排队且还有次数限制,本地打包 则就没有这些限制,而且会 本地打包 对开发 原生插件 有很大的帮助。 细节&#x…

NeurIPS 2024 | 像素级LLM实现图像视频理解、生成、分割和编辑大统一(昆仑万维等)

Accepted by NeurIPS 2024 文章链接:https://arxiv.org/pdf/2412.19806 项目链接:https://vitron-llm.github.io/ Github链接:https://github.com/SkyworkAI/Vitron 亮点直击 首次提出了一种通用的视觉多模态大语言模型(MLLM&…

细说STM32F407单片机FSMC连接外部SRAM的方法及HAL驱动

目录 一、FSMC连接外部SRAM的原理 1、 FSMC控制区域的划分 2、SRAM芯片与MCU的连接 二、访问外部SRAM的HAL驱动程序 1、外部SRAM初始化与控制 2、外部SRAM读写函数 3、直接通过指针访问外部SRAM 4、DMA方式读写外部SRAM 本文介绍STM32F407单片机FSMC连接外部SRAM及以轮…

Gitee图形界面上传(详细步骤)

目录 1.软件安装 2.安装顺序 3.创建仓库 4.克隆远程仓库到本地电脑 提交代码的三板斧 1.软件安装 Git - Downloads (git-scm.com) Download – TortoiseGit – Windows Shell Interface to Git 2.安装顺序 1. 首先安装git-2.33.1-64-bit.exe,顺序不能搞错2. …

基于单片机洗衣机控制器的设计(论文+源码)

1需求分析 在智能洗衣机系统设计中,考虑到洗衣机在实际应用过程中,需要满足用户对于不同衣物清洁、消毒的应用要求,对设计功能进行分析,具体如下: 通过按键实现洗衣机不同工作模式的切换,包括标准模式&…

【学Rust开发CAD】2 创建第一个工作空间、项目及库

文章目录 一、 创建工作空间二、新建项目(可执行文件)三、 新建库(库文件)四、更新项目依赖五、编写代码七、总结 在 Rust 中,工作空间(workspace)允许你管理多个相关的包(crate&…

STM32的LED点亮教程:使用HAL库与Proteus仿真

学习目标:掌握使用STM32 HAL库点亮LED灯,并通过Proteus进行仿真验证! 建立HAL库标准工程 1.新建工程文件夹 新建工程文件夹建议路径尽量为中文。建立文件夹的目的为了更好分类去管理项目工程中需要的各类工程文件。 首先需要在某个位置建立工…

Unity Excel转Json编辑器工具

功能说明:根据 .xlsx 文件生成对应的 JSON 文件,并自动创建脚本 注意事项 Excel 读取依赖 本功能依赖 EPPlus 库,只能读取 .xlsx 文件。请确保将该脚本放置在 Assets 目录下的 Editor 文件夹中。同时,在 Editor 下再创建一个 Exc…

牛客网刷题 ——C语言初阶(6指针)——字符逆序

1. 题目描述:字符逆序 牛客网题目链接 将一个字符串str的内容颠倒过来,并输出。 输入描述: 输入一个字符串,可以有空格 输出描述: 输出逆序的字符串 示例1 输入 I am a student 输出 tneduts a ma I 2. 思路 首先字符串逆序,之…

【USRP】教程:在Macos M1(Apple芯片)上安装UHD驱动(最正确的安装方法)

Apple芯片 前言安装Homebrew安装uhd安装gnuradio使用b200mini安装好的路径下载固件后续启动频谱仪功能启动 gnu radio关于博主 前言 请参考本文进行安装,好多人买了Apple芯片的电脑,这种情况下,可以使用UHD吗?答案是肯定的&#…

141.《mac m系列芯片安装mongodb详细教程》

文章目录 下载从官网下载安装包 下载后双击解压出文件夹安装文件名修改为 mongodb配置data存放位置和日志log的存放位置启动方式一方式二方式二:输入mongo报错以及解决办法 本人电脑 m2 pro,属于 arm 架构 下载 官网地址: mongodb官网 怎么查看自己电脑应该下载哪个版本,输入…

Elasticsearch:基础概念

这里写目录标题 一、什么是Elasticsearch1、基础介绍2、什么是全文检索3、倒排索引4、索引(1)创建索引a 创建索引基本语法b 只定义索引名,setting、mapping取默认值c 创建一个名为student_index的索引,并设置一些自定义字段 &…

Dexcap复现代码数据预处理全流程(四)——demo_clipping_3d.py

此脚本的主要功能是可视化点云数据文件(.pcd 文件),并通过键盘交互选择演示数据的起始帧和结束帧,生成片段标记文件 (clip_marks.json) 主要流程包括: 用户指定数据目录:检查目录是否存在并处理标记文件 -…

安装Cockpit服务,使用Web页面管理你的Linux服务器

说起管理 Linux 服务器,大家首先想到的使用 SecureCRT、Xshell、MobaXterm 等工具远程到服务器,然后使用命令行管理服务器。今天给大家介绍一个好玩的工具,名字叫Cockpit, Cockpit 是一个免费开源的基于 web 的 Linux 服务器管理…

[A-25]ARMv8/v9-GIC的系统架构(中断的硬件基础)

ver0.1 前言 我们在观看很多的影视剧过程中,尤其是军旅体裁类型的布景中,经常会看见高级干部的办公桌上都会有几部电话机。这样的电话可不能小看,重要的事情尤其是突发和紧急的情况都要通过这几部电话第一时间通知给决策者。这几部电话,必须举报几个特点:及时性好、稳定…

13-线段的转折点样式

13-线段的转折点样式_哔哩哔哩_bilibili13-线段的转折点样式是一次性学会 Canvas 动画绘图(核心精讲50个案例)2023最新教程的第14集视频,该合集共计53集,视频收藏或关注UP主,及时了解更多相关视频内容。https://www.bi…

计算机网络 (28)虚拟专用网VPN

前言 虚拟专用网络(VPN)是一种在公共网络上建立私有网络连接的技术,它允许远程用户通过加密通道访问内部网络资源,实现远程办公和安全通信。 一、基本概念 定义:VPN是一种通过公共网络(如互联网&#xff09…

基于transformer的目标检测:DETR

目录 一、背景介绍 二、DETR的工作流程 三、DETR的架构 1. 损失函数 2. 网络框架讲解及举例 一、背景介绍 在深度学习和计算机视觉领域,目标检测一直是一个核心问题。传统方法依赖于复杂的流程和手工设计的组件,如非极大值抑制(nms&…