为数据可视化增添戏剧性

news2024/10/5 17:25:55

Python 中的视觉叙事:让数据说话的 5 个创新技巧 为数据可视化增添戏剧性

数据可视化 - 这是一个现在经常被抛出的短语。但我们谈论的不仅仅是普通的旧图表和图形。

alt

不 不 不。我们谈论的是讲故事。我们正在谈论将这些行和列的数字变成令人着迷的叙述。

现在是我们从“仅仅可视化”转向“视觉叙事”的时候了。准备好将您的 Python 数据可视化游戏提升到一个新的水平了吗?

让我们开始黑客攻击吧!

技巧-1:在可视化中使用隐喻

让我们将销售数据转化为令人惊叹的日出,代表企业的“新黎明”。我们可以使用 's 方法来创建渐变效果:

matplotlibfill_between

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

# Sales data as a rising sun
sales_data = np.random.randint(100, 200, 50).tolist()
sales_data.sort()
fig, ax = plt.subplots()
ax.plot(sales_data, color='black')
# Create a gradient effect for the sunrise
for i in range(len(sales_data)):
    ax.fill_between(range(i, i+2), 0, sales_data[i:i+2], color=plt.get_cmap('YlOrRd')(i*5))
plt.title('Sales Data: A New Dawn')
plt.xlabel('Time')
plt.ylabel('Sales')
plt.show()

这会产生惊人的日出效果:

alt

并有助于将您无聊的销售数据转化为增长和新开始的美丽叙述。

技巧-2:掌握数据可视化中的悬念艺术

我们要把一个普通的折线图变成一个情绪过山车。我们不是简单地透露股价,而是让观众预测高点和低点。我们可以通过使用以下函数来实现这一点:

FuncAnimationmatplotlib.animation

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
# A suspenseful reveal of a stock price
stock_price = np.random.randint(50, 100, 50)
fig, ax = plt.subplots()
line, = ax.plot(stock_price, color='red')
def update(num, line):
    line.set_data(np.arange(num), stock_price[:num])
    return line,
ani = animation.FuncAnimation(fig, update, frames=len(stock_price), fargs=[line], repeat=False)
plt.title('Stock Price Reveal')
plt.xlabel('Time')
plt.ylabel('Price')
plt.show()

这个折线图随着时间的推移而展开,创造了悬念和期待。

alt

这是一个关于起伏的故事,一个视觉悬念,让你的观众粘在屏幕上。

技巧-3:充满情感的配色方案

让我们创建一个充满活力的热图,而不是普通条形图。这将为我们提供一个情感调色板,与观众建立更深层次的联系:

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# Sales data with emotionally-charged colors
months = ['Jan''Feb''Mar''Apr''May''Jun''Jul''Aug''Sep''Oct''Nov''Dec']
sales_data = np.random.randint(50, 100, 12)
# Convert to DataFrame
df = pd.DataFrame(sales_data.reshape(-1, len(months)), 
                  columns=months)
# Create a heatmap
sns.heatmap(df, cmap='coolwarm', annot=True)
plt.title('Sales Data with Emotionally-Charged Colors')
plt.xlabel('Month')
plt.ylabel('Sales')
plt.show()

此热图使用暖色和冷色来唤起情感,使销售数据感觉更加个性化和相关。

alt

您正在运行热(红色)或冷(蓝色)。无论哪种方式,两者之间都有戏剧性的对比。

技巧-4:帕累托前沿比较——游戏规则改变者

听说过帕累托原则吧?这是一个以意大利经济学家维尔弗雷多·帕累托Vilfredo Pareto命名的概念,该概念指出,大约80%的影响来自20%的原因。

在数据可视化中,我们可以使用此原则来展示“最佳”选项,其中“最佳”是基于您正在考虑的变量的主观术语。

假设您正在比较不同营销策略的效果。您拥有每个策略的成本和由此带来的销售额增长。帕累托前线图将让您确定为您带来最大收益的策略。

以下是创建这样一个情节的方法,其中包含策略列表,然后进行演示,一些随机成本和相关的销售增长。最后,带有注释的颜色编码散点图:

帕累托前沿比较-在此示例中,PPC是最佳选择。

在此可视化中,每个点的颜色代表帕累托前沿值,即销售增长减成本。根据帕累托原理,价值最高的策略是我们的“最佳”选择。

import matplotlib.pyplot as plt
import numpy as np

# Marketing strategies
strategies = ['SEO''Email''Affiliate''PPC''Content''Social''Display''Direct''Referral''PR']

# Cost and sales increase for each strategy
cost = np.random.randint(1000, 5000, 10)
sales_increase = np.random.randint(500, 2000, 10)

# Pareto front
pareto_front = sales_increase - cost
pareto_front_sorted = np.argsort(pareto_front)

plt.figure(figsize=(10,6))
plt.scatter(cost, sales_increase, c=pareto_front, cmap='viridis', s=100)
plt.colorbar(label='Pareto Front')
plt.xlabel('Cost')
plt.ylabel('Sales Increase')
for i, txt in enumerate(strategies):
    plt.annotate(txt, (cost[i], sales_increase[i]))
plt.title('Pareto Front Comparison of Marketing Strategies')
plt.show()

这个图表不仅提供了清晰的比较,而且其生动的颜色和战略性注释使它令人难忘。

alt

这就是数据叙事!

技巧-5:个性化故事的互动性

我们将散点图提升到3D交互图,让观众控制浏览和探索数据:

这个3D交互图允许观众悬停和旋转图表,提供个人化的实践体验和促进探索。

通过鼠标浏览该交互式图表,观众可以发现更多数据背后的信息。

例如,通过点击特定的战略数据点,可以看到该策略能带来的具体销售增长和成本。这允许观众根据自己的需求和兴趣创建数据故事。

交互式图表比静态视图提供了更丰富的体验,能讲述更个性化和吸引人的故事。它使数据成为一种工具,让观众探索并获得自己想要的信息。

import plotly.express as px

# Interactive 3D scatter plot
df = px.data.iris()
fig = px.scatter_3d(df, x='sepal_width', y='sepal_length', z='petal_length', color='species'
                    size='petal_length', hover_data=['petal_width'])
fig.show()

通过将鼠标悬停在图表上的每个点上,您可以阅读与该点相关的所有信息。非常互动,非常酷。

简而言之,通过控制权和探索性,交互式图表为数据传达和观众参与提供了最强有力的手段。

它打开了丰富多彩的渠道,可以讲述动态、个性化且具有高度吸引力的数据故事。

alt

技巧-5:地理信息可视化

六边形覆盖物对于制作吸引人且有意义的地图非常有用。与在栅格上显示数据相比,它们可创建更清晰的视觉效果,并且还具有支持多个字符串属性的存储和可视化、在仪表盘中创建触发事件以及使用拉伸高度的额外优势。

游戏中角色的位置采用六边形表达,可以提高位置查找的算法效率上的意义,请参考链接👇

pip install ellipsis
pip install geopandas
pip install h3pandas

因此,使用geopandas,h3pandas和省略号,您可以非常快速地创建六边形地图,并在仪表板或应用程序中使用它们。

alt
alt

结束...

每个情节都展示了数据可视化中创造性叙事的力量。

请记住,精心制作的视觉故事可以成为理解、记忆和根据数据做出决策的强大工具。不要只呈现数据,要讲述数据故事。

请记住,这里的目标不是歪曲数据或混淆您的受众。相反,它是为了让您的数据更具相关性和记忆力。

归根结底,我们不仅仅是数字运算者——我们是讲故事的人,我们的媒介是数据。

快乐讲故事!

本文由 mdnice 多平台发布

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

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

相关文章

Elasticsearch:数据是如何被写入的?

在我之前的文章 “Elasticsearch:索引数据是如何完成的”,我详述了如何索引 Elasticsearch 的数据的。在今天的文章中,我将从另外一个视角来诠释如何写入数据到 Elasticsearch。更多关于 Elasticsearch 数据操作,请阅读文章 “Ela…

PowerShell install 一键部署postgres15

postgres 前言 PostgreSQL 是一个功能强大的开源对象关系数据库系统,拥有超过 35 年的积极开发经验 这为其赢得了可靠性、功能稳健性和性能的良好声誉。 通过官方文档可以找到大量描述如何安装和使用 PostgreSQL 的信息。 开源社区提供了许多有用的地方来熟悉Postg…

08 【生命周期 组件】

1. 生命周期 1.1 引出生命周期 生命周期 又名生命周期回调函数,生命周期函数、生命周期钩子是什么,Vue在关键时刻帮我们调用的一些特殊名称函数生命周期函数的名字不可更改,但函数的具体内容是根据程序员需求编写的生命周期函数中的this指向的是vm或组件实例对象 <div i…

贺斌教授团队:多少冥想训练才能提高脑机接口的性能?

冥想训练可以帮助人们学会更好地控制脑机接口。但是一项新的研究发现&#xff0c;单次的冥想练习不足以提高表现。发表在《Frontiers in Human Neuroscience》的一项研究结果表明&#xff0c;人们需要更长时间的冥想才能体验到明显的改善。 # 脑机接口性能如何提高&#xff1f;…

kafka 集群是如何选择 leader,你知道吗?

前言 kafka集群是由多个broker节点组成&#xff0c;这里面包含了许多的知识点&#xff0c;以下的这些问题你都知道吗? 你知道topic的分区leader是怎么选举的吗&#xff1f; 你知道zookeeper中存储了kafka的什么信息吗&#xff1f;起到什么做呢&#xff1f; 你知道kafka消息…

基于matlab地形可视化仿真

一、前言 此示例说明了将常规可用的数字高程模型转换为 X3D 格式以用于虚拟现实场景的可能性。 作为地形数据源&#xff0c;已使用南旧金山 DEM 模型。场景中包含一个简单的预制波音 747 模型&#xff0c;以展示从多个来源即时创建虚拟场景的技术。 此示例需要映射工具箱。 二、…

高通全面进攻智能汽车「路径」

“统一技术路线图”&#xff0c;被高通技术公司高级副总裁兼汽车业务总经理Nakul Duggal着重提及。 5月26日&#xff0c;高通在苏州举办汽车技术与合作峰会&#xff0c;Nakul Duggal在峰会上坦言&#xff0c;“我们在所有业务领域、所有产品开发中都遵循‘统一技术路线图’&am…

【owt】WebrtcNode, publish-sdp offer 流程(2)

流程图 创建MediaStream&#xff0c; MediaStream一方面作为从客户端接收到媒体数据&#xff0c;另外一方面做为视频源&#xff1b;创建VideoFrameConstructor&#xff0c;VideoFrameConstructor 把sink 注册到MediaStream&#xff0c;这样MediaStream&#xff08;继承了MediaS…

运维小白必学篇之基础篇第七集:磁盘管理实验

磁盘管理实验 实验作业&#xff1a; 1、添加1块磁盘&#xff0c;并查看&#xff08;lsblk&#xff09; 2、使用MBR分区表的格式对添加的磁盘划分分区&#xff0c;完成以下操作&#xff1a; 1、创建3个主分区&#xff0c;每个分区大小为2个GB 2、创建扩展分区&#xff0c;将剩…

前端技术搭建俄罗斯方块(内含源码)

The sand accumulates to form a pagoda ✨ 写在前面✨ 功能介绍✨ 页面搭建✨ 样式设置✨ 逻辑部分 ✨ 写在前面 上周我们实通过前端基础实现了扫雷游戏&#xff0c;今天还是继续按照我们原定的节奏来带领大家完成俄罗斯方块游戏&#xff0c;功能也比较简单简单&#xff0c;也…

【源码篇】基于SSM的办公管理系统

1、项目介绍 基于SSM的办公管理系统主要是对于办公用品的申领进行管理&#xff0c;系统分为三种角色&#xff0c;超级管理员、企业职工、审核员&#xff0c;每种角色拥有不同的权限菜单 主要功能模块有&#xff1a; 系统管理(用户管理、角色管理、菜单管理、个人信息管理、修…

ArrayList源码

介绍 ArrayList非线程安全。ArrayList基于动态数组&#xff0c;是一种线性表。随机访问友好&#xff0c;插入和删除效率低。 ​ 增删慢&#xff1a;每次删除元素&#xff0c;都需要改变数组长度、拷贝以及移动数组长度 ​ 查询快&#xff1a;由于数组在内存中是一块连续空间…

Python实战基础20-解密文件及目录操作

任务1 为泸州驰援湖北的89名白衣勇士点赞 【任务描述】 设计python程序&#xff0c;实现用户可以为泸州驰援湖北的89名白衣勇士点赞留言。用户点赞留言内容保存到本地txt文件中。 import os # 导入os模块 import random # 导入随机模块 import string # 导入string模块# 定义…

序列化与反序列化深入理解

序列化与反序列化深入理解 1 介绍1.1 概述1.2 序列化实现的需求 2 常用序列化实现函数序列化语言内置开源序列化实现 3 各序列化实现比较4 各序列化实现概述XMLJSONProtobufJava 内置TLVVLE&#xff08;Variable Length Encoding&#xff09; 5 flex & bison5.1 介绍应用解…

MyBatis-4

MyBatis 工作原理 形式上的应用为&#xff1a; UserMapper userMapper MyBatisSessionFactory.getMapper(UserMapper.class); List<User> userList userMapper.selectByExample(example)真正执行的操作为: SqlSession session MyBatisSessionFactory.getSession();…

聊天更有趣ChatGPT【再次更新】第三方插件

ChatGPT再次更新&#xff0c;第三方插件让你的聊天更有趣 你是否曾经想过&#xff0c;如果你能够和你最喜欢的明星、作家或者历史人物聊天&#xff0c;会是什么样的体验&#xff1f;你是否曾经想过&#xff0c;如果你能够和你的朋友一起玩一些有趣的游戏、挑战或者测试&#x…

spring注解驱动开发(BEAN注册方式与生命周期)

目录 容器中注册BEAN的方式 BEAN生命周期 容器中注册BEAN的方式 包扫描组件标注注解 ComponentScan(basePackages {"com.an.spring.condition"}) Service Component Controller RepositoryBEan方式【导入第三方包里面的组件】 ComponentScan(basePackages {&quo…

chatgpt赋能python:Python处理雷达数据

Python处理雷达数据 雷达技术是一种主要用于测量目标距离、速度和方位的技术。在雷达系统中&#xff0c;雷达接收器接收到的信号经过一系列的处理才能得到有效的数据。在这一过程中&#xff0c;Python语言得到了广泛应用。本文将介绍Python如何处理雷达数据。 雷达数据的格式…

linuxOPS基础_ssh概念详解

ssh 什么是SSH SSH&#xff08;Secure Shell&#xff0c;安全外壳&#xff09;是一种网络安全协议&#xff0c;通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录和文件传输方式&#xff0c;例如Telnet、FTP&#xff0c;使用明文传输数据&#xff0c;存在很多…

Openlayers 教程 - 基于 Openlayers api 实现空间查询(客户端):点选、范围查询

Openlayers 教程 - 基于 Openlayers api 实现空间查询&#xff08;客户端&#xff09;&#xff1a;点选、范围查询 客户端空间查询核心代码在线示例 客户端空间查询 在地理信息系统中&#xff0c;空间查询有的非常重要的作用&#xff0c;几乎所有地图相关的业务系统都需要空间…