python科研作图

1、气泡图

气泡图是一种在xy轴上显示三个维度的数据的有效方式。在气泡图中,基本上,每个气泡代表一个数据点。横坐标和纵坐标的位置代表两个维度,气泡的大小则代表第三个维度。

在这个例子中,我们用numpy库生成了一些随机数据,然后用matplotlib库的scatter函数创建了一个气泡图。在scatter函数中,参数x, y分别代表数据点的x和y坐标,参数s代表数据点(即气泡)的大小。

import matplotlib.pyplot as plt
import numpy as np
​
# 随机生成数据
np.random.seed(0)
x = np.random.rand(25)
​
y = np.random.rand(25)
z = np.random.rand(25) * 1000  # 这将决定气泡的大小
​
# 创建气泡图
plt.scatter(x, y, s=z)
​
# 添加图形的标题和x,y轴的标签
plt.title('bubble')
plt.xlabel('X')
plt.ylabel('Y')
​
# 显示图形
plt.show()

2、影响图

影响图(Influence Diagram)是一种用于展示变量之间因果关系的图形化工具。在Python中,可以使用NetworkX和Matplotlib等库来绘制影响图。

import matplotlib.pyplot as plt
import networkx as nx
​
# 创建一个有向图
G = nx.DiGraph()
​
# 添加节点
G.add_node("X")
G.add_node("Y")
G.add_node("Z")
​
# 添加边
G.add_edge("X", "Y")
G.add_edge("Y", "Z")
G.add_edge("X", "Z")
​
# 绘制图形
pos = nx.spring_layout(G)
nx.draw(G, pos, with_labels=True)
plt.show()

3、条形图

条形图(Bar chart)是一种以条形为主要表现形式的图形化数据可视化工具。它通过将数据值转换为条形的长度或高度来展示数据,以便直观地比较和解读不同类别的数据。条形图常用于展示两个或多个类别的数据集之间的相对大小、频次或百分比等。

条形图的基本构成包括横轴和纵轴。横轴通常代表分类或类别,纵轴则代表数值或定量数据。根据数据的类型和可视化需求,可以选择使用垂直条形图或水平条形图。在垂直条形图中,条形的长度与数据值成正比;而在水平条形图中,条形的宽度与数据值成正比。

条形图具有多种变体和表现形式,例如单轴条形图、双轴条形图、分组条形图、堆叠条形图等。通过不同的颜色、标记、标签和其他可视化元素可以增加条形图的易读性和清晰度。条形图广泛应用于数据可视化、商业报告、统计分析和决策支持等领域。

import matplotlib.pyplot as plt
​
# 数据
categories = ['Category1', 'Category2', 'Category3', 'Category4', 'Category5']
values = [5, 8, 3, 6, 4]
​
# 创建条形图
plt.bar(categories, values)
​
# 添加标题和轴标签
plt.title('Simple Bar Chart')
plt.xlabel('Categories')
plt.ylabel('Values')
​
# 显示图表
plt.show()

4、箱线图

箱线图(Box Plot)是一种用于展示一组数据分散情况资料的统计图。包含一组数据的最大值、最小值、中位数、及上下四分位数。因此,箱线图可以提供关于数据分布的有用信息。

以下是一些箱线图的基本构成:

箱体:包含了所有数据的整体范围,也被称为“箱”。

中位数:标示出数据的“中点”。在箱线图中,中位数通常会有一条线直接连到箱体,且与箱体的中心对齐。

四分位数:标示出数据的“四分位数”,也就是将数据分为四个等份的四条线。在箱线图中,四分位数通常以“+”符号表示,且与箱体的上下边缘对齐。

须”的长度:箱线图中的“须”是两个方向向外延伸的线段,从四分位数的位置向两侧延伸。须的长度不会超过箱体的长度。

“异常值”:如果数据集中存在极端的或异常的数据点,它们会被单独标示出来,通常会以小圆圈或者是其他特殊的标记来表示。

通过观察箱线图,你可以快速了解这组数据的集中趋势、离散程度以及异常值。

import matplotlib.pyplot as plt  
import numpy as np  # 创建数据  
np.random.seed(10)  
data = np.random.normal(100, 20, 100)  # 绘制箱线图  
plt.boxplot(data)  # 设置图表标题和轴标签  
plt.title('Box Plot')  
plt.xlabel('Data')  
plt.ylabel('Value')  # 显示图表  
plt.show()

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
​
# 创建数据
np.random.seed(10)
data = np.random.normal(100, 20, 100)
​
# 绘制箱线图
sns.boxplot(x=data)
​
# 设置图表标题和轴标签
plt.title('Box Plot')
plt.xlabel('Data')
plt.ylabel('Value')
​
# 显示图表
plt.show()

5、核密度图

核密度图(Kernel Density Estimate,KDE)是一种用于估计随机变量概率密度函数的非参数方法。在 Python 中,可以使用多种库来绘制核密度图,其中包括 Seaborn、Matplotlib 和 SciPy。

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
​
# 生成示例数据
data = np.random.normal(size=100)
​
# 使用 Seaborn 绘制核密度图
sns.kdeplot(data, label='KDE')
​
# 显示图形
plt.legend()
plt.show()

import matplotlib.pyplot as plt
import numpy as np
​
# 生成示例数据
data = np.random.normal(size=100)
​
# 使用 Matplotlib 绘制核密度图
plt.hist(data, density=True, alpha=0.5, label='KDE')
​
# 显示图形
plt.legend()
plt.show()

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde
​
# 生成示例数据
data = np.random.normal(size=100)
​
# 使用 SciPy 计算核密度估计
kde = gaussian_kde(data)
x_range = np.linspace(min(data) - 1, max(data) + 1, 1000)
kde_values = kde(x_range)
​
# 使用 Matplotlib 绘制核密度图
plt.plot(x_range, kde_values, label='KDE')
​
# 显示图形
plt.legend()
plt.show()

6、小提琴图

小提琴图(Violin plot)是一种用于显示数据分布情况的图形。它类似于箱线图,但提供了更多的信息,如数据的核密度估计和四分位数。在Python中,可以使用Seaborn库来绘制小提琴图。

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
​
# 生成一些随机数据
rs = np.random.RandomState(0)
n, p = 40, 8
d = rs.normal(0, 2, (n, p))
d += np.log(np.arange(1, p + 1)) * -5 + 10
​
# 绘制小提琴图
sns.violinplot(data=d)
​
# 显示图形
plt.show()

7、热图

热图是一种可视化工具,用于展示二维数据集中的数据信息,其中颜色表示单元格的值。在热图中,行列的坐标是二维数据的标识符,每个单元格的颜色深浅表示其对应值的大小。通过热图,我们可以快速浏览和比较不同数据集中的数据分布和特征。

热图有多种类型,包括点热图、条形图热图、气泡热图、颜色映射热图等。其中点热图和条形图热图是最常用的热图类型之一。点热图以点的颜色来表示每个单元格的值,而条形图热图则使用条形的长度和颜色来表示每个单元格的值。

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
​
# 创建一个随机数据集
data = np.random.rand(10, 12)
​
# 创建一个热图
heatmap = sns.heatmap(data)
​
# 显示图形
plt.show()

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
​
# 创建一个随机数据集
data = np.random.rand(10, 12)
​
# 创建一个热图
heatmap = sns.heatmap(data, cmap='coolwarm')
​
# 显示图形
plt.show()

8、箭靶图

箭靶图,也叫做蜘蛛网图或者雷达图,是一种用于显示多变量数据的图形。它由一个中心点向外辐射出多条线段,每条线段代表一个变量,线段的长度代表该变量的数值大小。箭靶图的每个角都代表一个变量,从中心点到每个角的线段表示该变量的数值大小。箭靶图通常用于显示性能数据,如产品的性能指标、公司的财务数据等。在箭靶图中,每个变量的最大值和最小值通常被标出来,以便更好地了解每个变量的数值范围。箭靶图的主要优点是它可以同时显示多个变量的数值大小,并且可以通过线段的长度和角度来表示各个变量之间的关系。

import matplotlib.pyplot as plt
import numpy as np
​
# 创建一个新的figure
fig, ax = plt.subplots()
​
# 创建箭靶的外圈
circle1 = plt.Circle((0, 0), 10, fill=False)
circle2 = plt.Circle((0, 0), 20, fill=False)
circle3 = plt.Circle((0, 0), 30, fill=False)
circle4 = plt.Circle((0, 0), 40, fill=False)
circle5 = plt.Circle((0, 0), 50, fill=False)
circle6 = plt.Circle((0, 0), 60, fill=False)
circle7 = plt.Circle((0, 0), 70, fill=False)
circle8 = plt.Circle((0, 0), 80, fill=False)
​
# 将圆添加到图中
ax.add_artist(circle1)
ax.add_artist(circle2)
ax.add_artist(circle3)
ax.add_artist(circle4)
ax.add_artist(circle5)
ax.add_artist(circle6)
ax.add_artist(circle7)
ax.add_artist(circle8)
​
# 生成数据点
x = 60*np.random.randn(100)
y = 60*np.random.randn(100)
ax.scatter(x, y, color='r', alpha=0.5)
​
# 设置x轴和y轴的限制,使得它们的范围都是[-90, 90]
ax.set_xlim([-90, 90])
ax.set_ylim([-90, 90])
​
# 添加一个标题,设置字体为SimHei解决中文无法显示的问题
plt.title('箭靶图', fontproperties='SimHei')
​
# 显示图形
plt.show()

9、折线图

折线图是一种以线条表示数据信息的图表类型。在折线图中,数据点的相继关系通过线条的起伏和连贯性来表现。折线图通常用于显示时间序列或连续数据的变化情况。

import matplotlib.pyplot as plt
import numpy as np
​
# 定义数据
x = np.linspace(0, 10, 100)  # 在0到10之间均匀取100个点
y = np.sin(x)
​
# 绘制折线图
plt.figure(figsize=(10, 6))  # 设置图形大小
plt.plot(x, y, label='sin(x)', linewidth=2, linestyle='-', color='blue')  # 绘制折线图,并设置线宽、线型和颜色
plt.title('Sine Function')  # 设置图形标题
plt.xlabel('x')  # 设置x轴标签
plt.ylabel('y')  # 设置y轴标签
plt.xticks(np.arange(0, 11, 1))  # 设置x轴刻度
plt.yticks(np.arange(-1, 1 + 0.2, 0.2))  # 设置y轴刻度
plt.grid(True)  # 显示网格线
plt.legend()  # 显示图例
​
# 显示图形
plt.show()

10、饼图

饼图(Pie Chart)是一种以圆形表示数据信息的图表类型,通过将圆周分割成若干个扇形,每个扇形对应一个数据项或类别,以扇形的面积或长度来表示数据量或占比。

import matplotlib.pyplot as plt
​
# 定义数据
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
​
# 绘制饼图
plt.figure(figsize=(6, 6))  # 设置图形大小
plt.pie(sizes, labels=labels, autopct='%1.1f%%')  # 绘制饼图,并设置标签和百分比格式
​
# 显示图形
plt.show()

11、散点图

散点图(Scatter plot)是一种用于展示两个变量之间关系的图形,它用点的密度和位置来表示数据点的分布情况。在散点图中,每个点代表一个数据点,x轴和y轴分别表示两个变量,通过观察点的位置可以大致了解这两个变量之间的关系。

散点图的优点是能够直观地反映两个变量之间的关系,并且可以方便地添加其他参考线或数据集来帮助分析和预测。它的缺点是在数据点较多时,图形可能会显得比较杂乱,不易读出准确的关系。

import matplotlib.pyplot as plt
import numpy as np
​
# 定义数据
x = np.random.randn(100)
y = np.random.randn(100)
​
# 绘制散点图
plt.figure(figsize=(6, 6))  # 设置图形大小
plt.scatter(x, y)  # 绘制散点图
​
# 显示图形
plt.show()

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

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

相关文章

软件测试常问面试题

1、讲一下你最熟悉的模块是怎么测试的? 2、fiddler如何抓https请求? 步骤: 设置浏览器http代理 安装证书 导入证书,端口号8888 手机端获取fiddler的地址,配置无线局域网代理,安装手机证书。 3、jmeter如何参…

【C# Programming】继承、接口

一、继承 1、派生 继承在相似而又不同的概念之间建立了类层次概念。 更一般的类称为基类,更具体的类称为派生类。派生类继承了基类的所有性质。 定义派生类要在类标识符后面添加一个冒号,接着添加基类名。 public class PdaItem {public string Name {…

【Spring Boot系列】- Spring Boot侦听器Listener

【Spring Boot系列】- Spring Boot侦听器Listener 文章目录 【Spring Boot系列】- Spring Boot侦听器Listener一、概述二、监听器Listener分类2.1 监听ServletContext的事件监听器2.2 监听HttpSeesion的事件监听器2.3 监听ServletRequest的事件监听器 三、SpringMVC中的监听器3…

【Redis】3、Redis主从复制、哨兵、集群

Redis主从复制 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务器…

HeyFriday AI:智能AI写作工具

【产品介绍】​ 名称 HeyFriday AI 具体描述​ HeyFriday是一款智能AI写作工具,可以帮助用户快速生成博客、广告、创意故事等各种类型的文本内容,节省时间和金钱。​HeyFriday的团队由前谷歌NLP科学家(ALBERT的第一作者&#xff…

本地docker注册证书docker login连接到harbor仓库、利用shell脚本将大量镜像pull、tag、push到私有harbor仓库

1. 本地docker注册证书docker login连接到harbor仓库: 我们使用docker login/push/pull去与Harbor打交道,上传下载镜像等。 但是可能会出现x509: certificate signed by unknown authority之类的错误。 [roottest01 harbor.dev]# docker login harbor.d…

[Linux入门]---搭建Linux环境

1.Linux环境的搭建方式 使用Linux操作系统的三种途径: 1.直接安装在物理机上,但是由于 Linux 桌面使用起来非常不友好,不推荐。 2.使用虚拟机软件,将 Linux 搭建在虚拟机上,但是由于当前的虚拟机软件(如 VMWare 之类的…

博客系统(升级(Spring))(二)获取当前用户信息、对密码进行加密、设置统一数据格式、设置未登录拦截、线程池

博客系统(二) 博客系统获取当前用户的信息对密码进行加密和解密的操作设置统一的数据返回格式设置未登录拦截设置线程池 博客系统 博客系统是干什么的? CSDN就是一个典型的博客系统。而我在这里就是通过模拟实现一个博客系统,这是…

CocosCreator3.8研究笔记(十九)CocosCreator UI组件(三)

前面的文章已经介绍了Layout 组件 、ScrollView 组件 、PageView 组件 。 想了解的朋友,请查看 CocosCreator3.8研究笔记(十八)CocosCreator UI组件(二)。 今天我们主要介绍CocosCreator 常用组件:Butt…

Idea安装webservice插件

打开Idea的settings菜单,选择Plugins,模糊搜索"Web Ser",安装以下3个红框内插件: 安装好以上3个插件后,就可以根据需求生成webservice客户端或者webservice服务端了。

Java-华为真题-预定酒店

需求: 放暑假了,小王决定到某旅游景点游玩,他在网上搜索到了各种价位的酒店(长度为n的数组A),他的心理价位是x元,请帮他筛选出k个最接近x元的酒店(n>k>0)&#xff…

mysql中left join时join和on的先后顺序

1.mysql中在内连接时,on的效果无论是对驱动表还是非驱动表和where的效果是一样的 ,on的顺序在join的前面 2.在外连接中 on 中添加筛选条件,只会对非驱动表生效,对驱动表是没有作用的,所以只有对非驱动表时,on的顺序是在join前面