前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >利用散点图探索帕尔默企鹅数据

利用散点图探索帕尔默企鹅数据

作者头像
HsuHeinrich
发布于 2025-04-29 13:23:32
发布于 2025-04-29 13:23:32
5600
代码可运行
举报
文章被收录于专栏:HsuHeinrichHsuHeinrich
运行总次数:0
代码可运行

利用散点图探索帕尔默企鹅数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import matplotlib.pyplot as plt
import numpy as np

from adjustText import adjust_text
from faker import Faker
from palmerpenguins import load_penguins

数据探索

以下数据如果有需要的同学可关注公众号HsuHeinrich,回复【数据可视化】自动获取~

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 数据展示
penguins = load_penguins()
penguins.head()
image-20240129170656049
image-20240129170656049

image-20240129170656049

species:企鹅的种类,包括 Adelie、Chinstrap 和 Gentoo 三种。 island:企鹅所在岛屿的名字,包括 Biscoe、Dream 和 Torgersen 三个岛屿。 bill_length_mm:企鹅的喙长,单位毫米。 bill_depth_mm:企鹅的喙深,单位毫米。 flipper_length_mm:企鹅的鳍长,单位毫米。 body_mass_g:企鹅的体重,单位克。 sex:企鹅的性别,包括 Male 和 Female。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 数据清洗
penguins = penguins.dropna() # 删除na

绘制基础散点图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 设置基础信息:包括颜色、物种列表等信息

# 颜色
BG_WHITE = "#fbf9f4"
GREY_LIGHT = "#b4aea9"
GREY50 = "#7F7F7F"
GREY30 = "#4d4d4d"
BLUE_DARK = "#1B2838"
BLUE = "#2a475e"
COLORS = ["#386cb0", "#fdb462", "#7fc97f" ] # 为物种分配颜色

# 物种列表
SPECIES = sorted(penguins["species"].unique())

# 水平线
HLINES = [40, 50, 60]

# 刻度值列表
YTICKS = [40, 50, 60]
XTICKS = [160, 170, 180, 190, 200, 210, 220, 230, 240]

# 随机生成企鹅名字
faker = Faker()
faker.seed_instance(11) 
NAMES = [faker.first_name() for i in range(len(penguins))]

# 标记形状列表
MARKERS = ["o", "^", "s"]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 初始化画布
fig, ax = plt.subplots(figsize= (14, 10))

# 背景颜色
fig.patch.set_facecolor(BG_WHITE)
ax.set_facecolor(BG_WHITE)

# 水平线
for h in HLINES:
    ax.axhline(h, color=GREY50, ls=(0, (5, 5)), alpha=0.8, zorder=0)

# 分组散点图
for species, color, marker  in zip(SPECIES, COLORS, MARKERS):
    data = penguins[penguins["species"] == species]
    ax.scatter(
        "flipper_length_mm", "bill_length_mm", s=50, color=color, 
        marker=marker, alpha=0.8, data=data
    )
output_12_0
output_12_0

output_12_0

添加不重叠的标签

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# adjustText可以自动放置标签

# 这里仅添加以c开头的名字
TEXTS = []
for i in range(len(penguins)):
    if NAMES[i].startswith("C"):
        x = penguins["flipper_length_mm"].iloc[i]
        y = penguins["bill_length_mm"].iloc[i]
        text = NAMES[i]
        TEXTS.append(ax.text(x, y, text, color=GREY30, fontsize=14, fontname="Poppins"))
        
# 添加标签
adjust_text(
    TEXTS, 
    expand_points=(2, 2),
    arrowprops=dict(
        arrowstyle="->", 
        color=GREY50, 
        lw=2
    ),
    ax=fig.axes[0]
)
fig
output_14_0
output_14_0

output_14_0

为图表增加更丰富的信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 添加标题与子标题
# 标题
fig.suptitle(
    "Palmer Penguins Data Visualization",
    x = 0.122,
    y = 0.975,
    ha="left",
    fontsize=32,
    fontname="Lobster Two",
    color=BLUE,
    weight="bold",    
)

# 子标题
ax.set_title(
    "Scatter plot of flipper length vs bill length",
    loc="left",
    ha="left",
    fontsize=24,
    fontname="Lobster Two",
    color=BLUE_DARK,
    weight="bold",
    pad=10
)

# 添加图例
legend = ax.legend(
    loc=(0.85, 0.025), # bottom-right
    labelspacing=1.5,  # add space between labels
    markerscale=1.5,   # increase marker size
    frameon=False      # don't put a frame
)

# 图例信息
for text, species in zip(legend.get_texts(), SPECIES):
    text.set_text(species)       
    text.set_fontname("Roboto")  
    text.set_fontsize(16)    
    
# 图例标题信息
legend.set_title("Species")
legend_title = legend.get_title()
legend_title.set_fontname("Roboto")
legend_title.set_fontweight("bold")
legend_title.set_fontsize(18)
legend_title.set_ha("left")

# 自定义边框布局
# 隐藏边框
ax.spines["right"].set_color("none")
ax.spines["top"].set_color("none")

# 边框颜色
ax.spines["left"].set_color(GREY_LIGHT)
ax.spines["left"].set_linewidth(2)
ax.spines["bottom"].set_color(GREY_LIGHT)
ax.spines["bottom"].set_linewidth(2)

# 刻度
ax.tick_params(length=0)

ax.set_yticks(YTICKS)
ax.set_yticklabels(YTICKS, fontname="Lobster Two", size=15)
ax.set_ylabel("bill Length (mm)", fontname="Lobster Two", size=18, weight="bold")

ax.set_xticks(XTICKS)
ax.set_xticklabels(XTICKS, fontname="Lobster Two", size=15)
ax.set_xlabel("flip length (mm)", fontname="Lobster Two", size=18, weight="bold")

fig
output_16_0
output_16_0

output_16_0

参考:Scatterplot with labels and text repel in Matplotlib[1]

共勉~

参考资料

[1]

Scatterplot with labels and text repel in Matplotlib: https://python-graph-gallery.com/web-text-repel-with-matplotlib/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HsuHeinrich 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
利用小提琴图探索帕尔默企鹅数据
众所周知,可视化好不好看,全凭注释是否精(花)准(哨)。接下来就是最考验技术的地方了!
HsuHeinrich
2025/04/23
690
利用小提琴图探索帕尔默企鹅数据
R4DS学习记录_ggplot2 - CG
A variable is a quantity, quality, or property that you can measure.
Crazy_George
2024/03/30
2910
关系(一)利用python绘制散点图
散点图可以了解数据之间的各种相关性,如正比、反比、无相关、线性、指数级、 U形等,而且也可以通过数据点的密度(辅助拟合趋势线)来确定相关性的强度。另外,也可以探索出异常值(在远超出一般聚集区域的数据点称)。
HsuHeinrich
2024/03/26
4070
关系(一)利用python绘制散点图
seaborn从入门到精通02-绘图功能概述
本文主要是seaborn从入门到精通系列第2篇,本文介绍了seaborn的绘图功能,包括Figure-level和axes-level级别的使用方法,以及组合数据绘图函数,同时介绍了较好的参考文档置于博客前面,读者可以重点查看参考链接。本系列的目的是可以完整的完成seaborn从入门到精通。重点参考连接
IT从业者张某某
2023/10/16
4040
seaborn从入门到精通02-绘图功能概述
数据可视化 | seaborn绘制散点图
由于涉及的图表类型为多类别散点图的绘制,在使用常规matplotlib进行绘制时会显得格外繁琐,所以我们选择了对matplotlib进行了更高级的API封装,使作图更加容易的seaborn包进行图表的绘制,更多seaborn 介绍,大家可以直接去seaborn官网进行相关资料的查阅。数据的读取使用的功能强大的数据处理包 pandas ,这里只是进行简单的删除空值操作,直接使用dropna() 函数操作即可,我们直接预览数据,如下(部分):
郭好奇同学
2020/11/25
2K0
数据可视化 | seaborn绘制散点图
Python高级绘图库(Seanborn)
Python绘图一般都是利用matplotlib库,利用这个库可以画出各种优美的图形,但是这个库画一些论文中比较复杂的图形时,代码就比较难写。 今天就给大家介绍一个基于matplotlib制作的绘图专用的库,可以绘制论文所需的图形,代码还很简单。 这个库就是Seaborn! 绘图示例 散点图 import seaborn as sns sns.set_theme(style="ticks") df = sns.load_dataset("penguins") sns.pairplot(df, hue="s
GIS与遥感开发平台
2022/04/29
3K0
Python高级绘图库(Seanborn)
使用element_text在ggplot2中自定义文本
ggplot2的主题系统可以让我们更好的控制图形 非数据元素 的细节,通过更加精细的修改来提升图像的美感,ggplot2 的主题系统自带多个 element_ 功能
前端小tips
2021/12/06
2.9K0
使用element_text在ggplot2中自定义文本
Python-seaborn 基础图表绘制-散点图
上期推文推出第一篇基础图表绘制-R-ggplot2 基础图表绘制-散点图 的绘制推文,得到了很多小伙伴的喜欢,也是我更加想使这个系列做的更加完善和系统,我之前也有说过,会推出Python和R的两个版本绘制教程,接下来我们就推出基础散点图的Python绘制版本。本期主要涉及的知识点如下:
数据森麟
2020/11/23
1.6K0
Python-seaborn 基础图表绘制-散点图
R-ggplot2 基础图表绘制-散点图
本期开始陆续推出基础图表的绘制推文教程,也算是自己的一个基础知识积累和巩固,希望和大家一同学习进步。这期的推文是关于散点图的绘制,主要知识点如下:
DataCharm
2021/02/22
1.3K0
R-ggplot2 基础图表绘制-散点图
绘图文本重叠怎么办?R-ggrepel和Python-adjustText 帮你解决
在进行数据可视化作品绘制时,我们需要在相应位置添加文本标签进行标注或者解释说明使用,少量数据点进行标注时相对简单,也比较明确,当需要标注的数据较多、或集中在一个区域时,标注文本就会产生相互叠加,影响标注内容和美观。如下:
DataCharm
2021/02/22
3.8K0
绘图文本重叠怎么办?R-ggrepel和Python-adjustText 帮你解决
Matplotlib
Matplotlib 官网 此篇笔记参考来源为《莫烦Python》 安装同之前所述,参考《Python初学基础》 基本使用 2.1 基本用法 import matplotlib.pyplot as plt import numpy as np x = np.linspace(-1, 1, 50) #使用np.linspace定义x:范围是(-1,1);个数是50 y = 2*x + 1 plt.figure() #定义一个图像窗口 plt.plot(x, y) plt.show()
闪电gogogo
2018/05/28
1.3K0
R-Python 基础图表绘制-核密度估计图
前面介绍了基础直方图的绘制教程,接下来,同样分享一篇关于数据分布的基础图表绘制-核密度估计图。具体含义我们这里就不作多解释,大家可以自行百度啊,这里我们主要讲解R-python绘制该图的方法。本期知识点主要如下:
DataCharm
2021/02/22
6610
R-Python 基础图表绘制-核密度估计图
seaborn从入门到精通03-绘图功能实现03-分布绘图distributional plots
本文主要是seaborn从入门到精通系列第3篇,本文介绍了seaborn的绘图功能实现,本文是分布绘图,同时介绍了较好的参考文档置于博客前面,读者可以重点查看参考链接。本系列的目的是可以完整的完成seaborn从入门到精通。重点参考连接
IT从业者张某某
2023/10/16
3880
seaborn从入门到精通03-绘图功能实现03-分布绘图distributional plots
如何用python画图——带你入门matplotlib
matplotlib是python中常用的一个可视化库,大多数的操作与MATLAB非常类似,所以对于从MATLAB迁移到python的朋友是非常友好的。matplotlib使用numpy进行数组运算,也支持pandas的Series直接用于matplotlib画图。
MeteoAI
2019/07/22
3K0
Python-matplotlib 学术柱状图绘制
柱状图或条形图在学术论文中使用的频率还是很大的,图中需要以不同颜色对不同数据进行区分,但当涉及黑白打印时,色彩颜色的区别度较小,导致难以理解,因此需要绘制黑灰颜色或者黑白阴影的柱状图或者条形图,下面就具体介绍使用Python-matplotlib 的实现过程。
气象学家
2020/07/17
4.8K0
Python-matplotlib 学术柱状图绘制
【转载】matplotlib.pyplot的使用总结大全(入门加进阶)
其实一年前就有想法好好学学python里的画图库matplotlib库,主要是因为每次可视化一些结果的时候,都是搜一些别人写好的代码,看的时候感觉乱乱的,不是说别人写的乱,而是每个人在某些点上实现的方式不太一样,还有就是觉得,总用别人的,就觉得不是自己创造的,没有成就感。这段时间做了个比赛,可视化分析的时候,又在搜代码,想自己加点东西,感觉很费劲,又不知道该怎么加,所以决定好好学一下,并做好总结。
marsggbo
2021/08/12
2.3K0
(在模仿中精进数据可视化04)旧金山街道树木分布可视化
  开门见山,今天我们要模仿的数据可视化作品来自#TidyTuesday活动于2020年1月28日发布的旧金山街道树木数据集下的众多参赛作品中,由Philippe Massicotte创作的(如图1所示)非常受欢迎的Street trees of San Francisco:
Feffery
2020/11/24
6370
(在模仿中精进数据可视化04)旧金山街道树木分布可视化
干货,用Python绘制“手绘风格”图表的所有方法!
今天给大家带来绘制“手绘风格”可视化作品的小技巧,主要涉及Python编码绘制,内容如下:
小F
2021/06/25
1K0
干货,用Python绘制“手绘风格”图表的所有方法!
【Python环境】matplotlib - 2D 与 3D 图的绘制
类MATLAB API 最简单的入门是从类 MATLAB API 开始,它被设计成兼容 MATLAB 绘图函数。 让我们加载它: from pylab import * 使用 qt 作为图形后端: %matplotlib qt 示例 类MATLAB API 绘图的简单例子: from numpy import * x = linspace(0, 5, 10) y = x ** 2figure() plot(x, y, 'r') xlabel('x') ylabel('y') title('title') s
陆勤_数据人网
2018/02/27
5.8K0
【Python环境】matplotlib - 2D 与 3D 图的绘制
Python-matplotlib 散点图绘制
本期推文的主要内容是散点图的绘制教程,所使用的数据关于全球教育水平划分的师生比例,涉及到的包主要为matplotlib和seaborn,当然用于数据处理分析的pandas和 numpy也必不可少。
DataCharm
2021/02/22
1.5K0
Python-matplotlib 散点图绘制
相关推荐
利用小提琴图探索帕尔默企鹅数据
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验