python常见绘图及代码

news2025/1/10 22:55:06

 

一、引言

 

在数据驱动的时代,将数据转化为直观的图形对于理解数据、发现模式和传达信息至关重要。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.coloradmin.cn/o/2274581.html

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

相关文章

【Maui】导航栏样式调整

前言 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用。 使用 .NET MAUI,可从单个共享代码库开发可在 Android、iOS、macOS 和 Windows 上运行的应用。 .NET MAUI 是一款开放源代码应用,是 X…

uniapp 微信小程序内嵌h5实时通信

描述: 小程序webview内嵌的h5需要向小程序实时发送消息,有人说postMessage可以实现,所以试验一下,结果是实现不了实时,只能在特定时机后退、组件销毁、分享时小程序才能接收到信息(小程序为了安全等考虑做了…

腾讯云AI代码助手编程挑战赛-厨房助手之AI大厨

腾讯云AI代码助手编程挑战赛-厨房助手之AI大厨 作品简介 身处当今如火箭般迅猛发展的互联网时代,智能聊天助手已然化身成为提升用户体验的关键利器,全方位渗透至人们的数字生活。 紧紧跟随着这股汹涌澎湃的时代浪潮,我毅然投身于极具挑战性…

网易云音乐登录两部手机:IP属地归属何方?

在数字化生活日益普及的今天,音乐平台成为了我们日常娱乐不可或缺的一部分。网易云音乐,作为众多音乐爱好者的首选,其丰富的音乐资源和个性化的推荐算法深受用户喜爱。然而,随着多设备登录成为常态,一个问题也随之浮现…

[工具]git克隆远程仓库到本地快速操作流程

一、新建空目录 二、初始化本地仓库 git init 初始化成功后&#xff0c;会在当前目录生成一个.git的目录。 三、关联远程仓库 git remote add origin <URL>这一步让本地仓库与远程仓库进行关联&#xff0c;origin是远程仓库的别名&#xff0c;可以自定义。 四、克隆…

如何在 Ubuntu 22.04 上集成 Collabora Online 教程

简介 在本教程中&#xff0c;我们将详细讲解如何在 Ubuntu 22.04 操作系统上安装 Collabora Online。 Collabora Online 是一个基于 LibreOffice 技术的开源办公套件。它提供了许多功能&#xff0c;其中最有用的一个功能是 Collabora 提供了 Word 文档、电子表格、演示文稿等…

Linux的内核空间中的日志打印函数printk的详解;如果设置`printk` 函数的默认日志级别和是否输出到终端控制台

引言 首先&#xff0c;要知道&#xff0c;内核空间是没有printf函数的&#xff0c;printf函数是是用户空间的标准 I/O 函数&#xff0c;而不是内核空间中的。 所以在运行于内核空间的程序中(比如驱动程序)&#xff0c;是不能使用printf函数的&#xff0c;但有时候我们又需要打…

Python编程实例-特征向量与特征值编程实现

特征向量与特征值编程实现 文章目录 特征向量与特征值编程实现1、什么是特征向量2、特征向量背后的直觉3、为什么特征向量很重要?4、如何计算特征向量?4、特征向量Python实现5、可视化特征向量6、总结线性代数是许多高级数学概念的基石,广泛应用于数据科学、机器学习、计算机…

202-01-06 Unity 使用 Tip1 —— UnityHub 模块卸载重装

文章目录 1 卸载模块2 更新配置文件3 重启 UnityHub 起因&#xff1a; ​ WebGL 平台打包程序报错&#xff0c;懒得修复了&#xff0c;因此粗暴地删了重装。但是 UnityHub 不支持卸载模块&#xff0c;因此手动配置。 1 卸载模块 ​ 以 Unity 6000.0.26f1c1 为例&#xff0c;其…

Git的简单介绍与如何安装Git

文章目录 前言一、初始git1.git是什么2.为什么要使用git(出现的问题)3.git是如何解决问题的 二、git的安装与卸载1.centos系统2.ubuntu系统3.windows 三、搭建git本地环境1.创建git本地仓库2.配置用户信息 总结 前言 本文简单引入git的相关内容。 一、初始git 1.git是什么 g…

Linux 进程入门:带你走进操作系统的核心地带(1)

&#x1f31f; 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。&#x1f31f; &#x1f6a9;用通俗易懂且不失专业性的文字&#xff0c;讲解计算机领域那些看似枯燥的知识点&#x1f6a9; 在 Linux 操作系…

C#版OpenCv常用函数大全

OpenCvSharp 是 OpenCV 的NET封装&#xff0c;提供了丰富的图像处理和计算机视觉功能。以下是一些常用函数及其详细说明。 1. 图像读取与显示 Cv2.ImRead 功能&#xff1a;读取图像文件并返回一个 Mat 对象。用法&#xff1a;Mat image Cv2.ImRead("path/to/image.jpg&…

【初阶数据结构】线性表之单链表

文章目录 前言 一、单链表的概念与结构 1.概念 2.结点 3.性质 二、实现单链表 1.结构的定义 2.链表的打印和结点的申请 3.单链表的尾插和头插 4.单链表的尾删和头删 5.单链表的查找 6.指定位置之前插入数据和指定位置之后插入数据 7.删除pos结点和删除pos之后的结…

DB-Engines Ranking 2025年1月数据库排行

DB-Engines Ranking 2025年1月数据库排行 DB-Engines排名根据数据库管理系统的受欢迎程度进行排名。排名每月更新一次。 2025年1月&#xff0c;共有423个数据库进入排行。 排行榜 Oracle Oracle 连续三月稳居榜首&#xff0c;排名稳定。2025 年 1 月分数较上月增 5.03&#x…

Hadoop3.x 万字解析,从入门到剖析源码

&#x1f496; 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长…

鸿蒙的APP真机调试以及发布

目录&#xff1a; 1、创建好鸿蒙项目2、创建AGC项目3、实现自动签名3.1、手动方式创建签名文件和密码 4、运行项目5、无线真机调试 1、创建好鸿蒙项目 2、创建AGC项目 &#xff08;1&#xff09;在File->Project Structure->Project->Signing Configs中进行登录。(未…

Swin Transformer模型详解(附pytorch实现)

写在前面 Swin Transformer&#xff08;Shifted Window Transformer&#xff09;是一种新颖的视觉Transformer模型&#xff0c;在2021年由微软亚洲研究院提出。这一模型提出了一种基于局部窗口的自注意力机制&#xff0c;显著改善了Vision Transformer&#xff08;ViT&#xf…

穷举vs暴搜vs深搜vs回溯vs剪枝系列一>字母大小写全排列

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; private List<String> ret;private StringBuffer path;public List<String> letterCasePermutation(String s) {ret new ArrayList<>();path new StringBuffer();dfs(s,0);return ret;}private voi…

LabVIEW软件侵权分析与应对

问&#xff1a;如果涉及到LabVIEW软件的仿制或模仿&#xff0c;特别是在功能、界面等方面&#xff0c;如何判断是否构成侵权&#xff1f;该如何应对&#xff1f; 答&#xff1a;LabVIEW软件的侵权问题&#xff0c;尤其是在涉及到仿制或模仿其功能、界面、设计等方面&#xff0…

玩转 JMeter:Random Order Controller让测试“乱”出花样

嘿&#xff0c;各位性能测试的小伙伴们&#xff01;今天咱要来唠唠 JMeter 里超级有趣又超实用的 Random Order Controller&#xff08;随机顺序控制器&#xff09;&#xff0c;它就像是性能测试这场大戏里的“魔术棒”&#xff0c;轻轻一挥&#xff0c;就能让测试场景变得千变…