Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >利用散点图探索Netflix的Selling Sunset系列的人物性格

利用散点图探索Netflix的Selling Sunset系列的人物性格

作者头像
HsuHeinrich
发布于 2025-05-21 06:33:40
发布于 2025-05-21 06:33:40
4300
代码可运行
举报
文章被收录于专栏:HsuHeinrichHsuHeinrich
运行总次数:0
代码可运行

利用散点图探索Netflix的Selling Sunset系列的人物性格

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from PIL import Image
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import requests
from io import BytesIO

数据探索

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df = pd.read_csv("https://raw.githubusercontent.com/holtzy/The-Python-Graph-Gallery/master/static/data/selling_sunset.csv")

# 数据展示
df.head()
image-20240129172017384
image-20240129172017384

image-20240129172017384

Netflix的"Selling Sunset"系列的人物数据: name:姓名 x/y:手动创建的位置,使代码易于阅读

图片预处理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def open_image(image_name, path):
    '''
    打开指定路径的图片,并将其转为numpy数组存储
    '''
    path_to_image = path + image_name + '?raw=true'
    response = requests.get(path_to_image)
    image = Image.open(BytesIO(response.content))
    image_array = np.array(image)
    
    return image_array
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 将图片存为字典备用
path = 'https://github.com/holtzy/The-Python-Graph-Gallery/blob/master/static/graph_assets/'
image_dict = {
    'Amanza': open_image('Amanza.png', path),
    'Brett': open_image('Brett.png', path),
    'Chelsea': open_image('Chelsea.png', path),
    'Chrishell': open_image('Chrishell.png', path),
    'Christine': open_image('Christine.png', path),
    'Davina': open_image('Davina.png', path),
    'Emma': open_image('Emma.png', path),
    'Heather': open_image('Heather.png', path),
    'Jason': open_image('Jason.png', path),
    'Mary': open_image('Mary.png', path),
    'Maya': open_image('Maya.png', path),
    'Vanessa': open_image('Vanessa.png', path)
}

绘制散点图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 初始化布局
fig, ax = plt.subplots(figsize=(4, 4))
fig.patch.set_facecolor('black')
ax.set_facecolor('black')

# 迭代每个图片
for key, value in image_dict.items():

    # 图片的x轴与y轴位置
    x_axis = df.loc[df['name']==key, 'x']
    x_axis = float(x_axis.iloc[0]) # 转为float型可以避免出现TypeError
    
    y_axis = df.loc[df['name']==key, 'y']
    y_axis = float(y_axis.iloc[0]) # 转为float型可以避免出现TypeError
    
    # 添加图片
    positions = [x_axis, 
                 y_axis, 
                 0.16, 0.16] # 自定义图片的宽和高
    ax_image = fig.add_axes(positions)

    # 展示图片
    image = image_dict[key]
    ax_image.imshow(image)
    ax_image.axis('off')  # 删除图片的轴
    
    # 给名字加上白色边框
    name = key
    bbox_props = dict(boxstyle="square,pad=0.4", edgecolor="white", facecolor="none")
    ax_image.annotate(name, xy=(0.5, -0.3), xycoords='axes fraction', color='white',
                      fontsize=10, ha="center", bbox=bbox_props)

plt.show()
output_10_0
output_10_0

output_10_0

为图表增加更丰富的信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 初始化布局
fig, ax = plt.subplots(figsize=(4, 4))
fig.patch.set_facecolor('black')
ax.set_facecolor('black')

# 绘制水平线
ax.annotate('', xy=(0, -1.3), xycoords='axes fraction', xytext=(0, 1.3),
            arrowprops=dict(arrowstyle='-', color='pink', linewidth=2))

# 绘制垂直线
ax.annotate('', xy=(-1.3, 0), xycoords='axes fraction', xytext=(1.3, 0),
            arrowprops=dict(arrowstyle='-', color='pink', linewidth=2))

# 迭代每个图片
for key, value in image_dict.items():

    # 图片的x轴与y轴位置
    x_axis = df.loc[df['name']==key, 'x']
    x_axis = float(x_axis.iloc[0]) # 转为float型可以避免出现TypeError
    
    y_axis = df.loc[df['name']==key, 'y']
    y_axis = float(y_axis.iloc[0]) # 转为float型可以避免出现TypeError
    
    # 添加图片
    positions = [x_axis, 
                 y_axis, 
                 0.16, 0.16] # 自定义图片的宽和高
    ax_image = fig.add_axes(positions)

    # 展示图片
    image = image_dict[key]
    ax_image.imshow(image)
    ax_image.axis('off')  # 删除图片的轴
    
    # 给名字加上白色边框
    name = key
    bbox_props = dict(boxstyle="square,pad=0.4", edgecolor="white", facecolor="none")
    ax_image.annotate(name, xy=(0.5, -0.3), xycoords='axes fraction', color='white',
                      fontsize=10, ha="center", bbox=bbox_props)

# 给坐标轴增加标签(轴各顶点处)
ax.text(0, 1.4,
         'CONFIDENT',
         fontsize=16, color='white', weight='bold',
         ha='center', va='center')
ax.text(0, -1.4,
         'ANXIOUS',
         fontsize=16, color='white', weight='bold',
         ha='center', va='center')
ax.text(-1.4, 0,
         'BENEVOLENT',
         fontsize=16, color='white', weight='bold',
         ha='center', va='center', rotation=90)
ax.text(1.4, 0,
         'MALICIOUS',
         fontsize=16, color='white', weight='bold',
         ha='center', va='center', rotation=270)

# 添加标题和描述
ax.text(0, 2,
         'Selling Sunset Vibes', # 标题
         fontsize=16, color='white', weight='bold',
         ha='center', va='center')
ax.text(0, 1.8,
         "Peronality analysis of stars from Netflix's Selling Sunset\nBased on chart by @bananapeele", # 描述
         fontsize=14, color='white',
         ha='center', va='center') 

# 添加著作信息
ax.text(1.2, -1.8,
         "@tanya_shapiro",
         fontsize=12, color='white',
         ha='center', va='center')
    
plt.show()
output_12_0
output_12_0

output_12_0

参考:Selling Sunset personality visualization[1]

共勉~

参考资料

[1]

Selling Sunset personality visualization: https://python-graph-gallery.com/web-scatterplot-with-images-in-circles/

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
FiveThirtyEight商业可视化作品绝了!复现它!!教程超详细~~(直播资料分享)
经常看我直播的小伙伴应该知道,小编最近在复现一些商业网站上的优秀可视化作品,也有很多同学让我直播进行讲解,这边和小伙伴们说一下:我们安排都是先在公众号发文,然后再进行情况选择是否进行直播讲解。好了,话不多说,今天小编给大家带来的是复现FiveThirtyEight网站的一幅可视化作品,详细介绍如下:
DataCharm
2021/12/27
1K0
FiveThirtyEight商业可视化作品绝了!复现它!!教程超详细~~(直播资料分享)
手把手教你用Matplotlib画一个小清新配色的商业图表
导读:本文使用小清新配色对散点图和折线图进行另类的绘制,绘制出让人耳目一新的商业图表可视化作品。
IT阅读排行榜
2020/09/08
1.2K0
手把手教你用Matplotlib画一个小清新配色的商业图表
数据可视化 | 双Y轴可视化绘制方法(Python、R两种方法)
最近有很多小伙伴私信我关于双Y轴图的绘制方法? 这里给出Python-matplotlib绘制方法和R-ggplot2的绘制方法
郭好奇同学
2020/12/28
2K0
数据可视化 | 双Y轴可视化绘制方法(Python、R两种方法)
利用小提琴图探索帕尔默企鹅数据
众所周知,可视化好不好看,全凭注释是否精(花)准(哨)。接下来就是最考验技术的地方了!
HsuHeinrich
2025/04/23
780
利用小提琴图探索帕尔默企鹅数据
Python数据分析--折线图
最近阅读学习了林骥老师的《数据化分析 Python 实战》,书中讲好的技能应该刻意的练习,而不是简单的重复。
MiaoGIS
2022/04/21
1.4K0
Python数据分析--折线图
数据科学 IPython 笔记本 8.12 文本和注解
创建良好的可视化涉及引导读者并使图形讲述故事。在某些情况下,可以以完全可视的方式讲述这个故事,而不需要添加文本,但在其他情况下,需要小的文本提示和标签。也许你将使用的最基本的注释类型是轴标签和标题,但选项超出了这个范围。让我们看看一些数据,以及我们如何可视化和注释它,来有助于传达有趣的信息。 我们首先设置笔记本来绘图并导入我们将使用的函数:
ApacheCN_飞龙
2022/05/07
1.1K0
数据科学 IPython 笔记本 8.12 文本和注解
Python 超燃动态可视化条形图源码及效果图
github地址:https://github.com/FabDevGit/barchartrace
拴小林
2020/12/14
1.3K0
Python 超燃动态可视化条形图源码及效果图
数据可视化 | 手撕 Matplotlib 绘图原理(二)
关于箭头和注释风格的更多介绍与示例,可以在 Matplotlib 的画廊gallery[1]中看到,尤其推荐
数据STUDIO
2021/06/24
1.6K1
Matplotlib 1.4W+字基础教程来了(收藏吃灰去吧~~)
参考:Rougier N P, Droettboom M, Bourne P E, et al. Ten Simple Rules for Better Figures[J]. PLOS Computational Biology【IF 4.7】, 2014, 10(9).感兴趣戳:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4161295/pdf/pcbi.1003833.pdf
DataCharm
2021/02/22
1.5K0
Matplotlib 1.4W+字基础教程来了(收藏吃灰去吧~~)
这40个Python可视化图表案例,强烈建议收藏!
不过有些小伙伴也会遇到不少问题,比如选择何种图表,以及如何制作,代码如何编写,这些都是问题!
小F
2021/09/14
4.5K0
Python数据分析--条形图
最近阅读学习了林骥老师的《数据化分析 Python 实战》,书中讲好的技能应该刻意的练习,而不是简单的重复。
MiaoGIS
2022/04/24
9710
Python数据分析--条形图
Matplotlib 中文用户指南 4.5 标注
使用text()会将文本放置在轴域的任意位置。 文本的一个常见用例是标注绘图的某些特征,而annotate()方法提供辅助函数,使标注变得容易。 在标注中,有两个要考虑的点:由参数xy表示的标注位置和xytext的文本位置。 这两个参数都是(x, y)元组。
ApacheCN_飞龙
2022/12/01
1.2K0
Matplotlib 中文用户指南 4.5 标注
Matplotlib 可视化之图例与标签高级应用
图例非常容易使用,只要求用户命名图。Matplotlib将自动创建一个包含每个图形元素的图例。即使在大多数情况下,一个简单的legend() 调用就足够了,但图例还是提供了几个选项,允许我们自定义图例的各个配置。如使用
数据STUDIO
2022/05/24
2K0
Matplotlib 可视化之图例与标签高级应用
Python可视化 | Seaborn经济学人经典图表仿制
上篇原创推文使用了R-ggplot2 实现了经济学人经典的图表仿制实现R-ggplot2 经典经济学人图表仿制,所以这期呢,我们就使用Python-seaborn实现这个经典的经济学人图表再现。主要涉及的知识点如下:
郭好奇同学
2020/11/25
1.2K0
Python可视化 | Seaborn经济学人经典图表仿制
Matplotlib 可视化之箭头与标注的高级应用
时间线是按时间顺序显示的事件列表。它通常是一个图形设计,显示一个长条,标有与之平行的日期,通常是同时期的事件。
数据STUDIO
2022/04/11
2K0
Matplotlib 可视化之箭头与标注的高级应用
(在模仿中精进数据可视化05)疫情期间市值增长top25公司
  新冠疫情对很多实体经济带来冲击的同时,也给很多公司带来了新的增长点。前段时间我看到图1所示的数据可视化作品,针对2020年1月1日到6月16日之间,世界范围内市值增大最多的25家公司进行可视化:
Feffery
2020/12/01
3490
(在模仿中精进数据可视化05)疫情期间市值增长top25公司
Python-matplotlib 商业图表仿制第7弹
虽然小伙伴们喜欢空间绘图方面的居多(毕竟这方面的小伙伴居多),但商业图表的绘制也不能放下哦!本期就推出一篇商业图表的仿制教程。主要涉及内容如下:
DataCharm
2021/02/22
3570
Python-matplotlib 商业图表仿制第7弹
Python-matplotlib 商业图表绘制03
本篇推文为python-matplotlib 商业图表绘制的第三篇文章,主要内容为圆润柱状图的绘制,这也是我之前一直想做的事情,在浏览Matplotlib官网时,发现了一个方法,就试着进行绘制,效果还不错。接下来,我们开始
DataCharm
2021/02/22
6190
Python-matplotlib 商业图表绘制03
Python空间+气泡图完美绘制房价分布
今天的推文教程使用geopandas进行空间图表的绘制(geopandas空间绘图很方便,省去了很多的数据处理过程,而且也完美衔接matplotlib,学习python 空间绘图的小伙伴可以看下啊),具体为空间气泡图的绘制,主要涉及的内容如下:
Python数据科学
2020/11/11
2K0
Python空间+气泡图完美绘制房价分布
利用散点图探索宇航员特征与太空任务之间的关系
参考:Custom scatterplot with annotations in Matplotlib[1]
HsuHeinrich
2025/05/13
630
利用散点图探索宇航员特征与太空任务之间的关系
推荐阅读
相关推荐
FiveThirtyEight商业可视化作品绝了!复现它!!教程超详细~~(直播资料分享)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验