首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >(x,y,z)数据的普洛特利热图

(x,y,z)数据的普洛特利热图
EN

Stack Overflow用户
提问于 2021-03-29 23:59:08
回答 1查看 1.2K关注 0票数 1

我正努力实现一张普洛特利的热图。您可以检查https://plotly.com/python/heatmaps/中的文档

文件中的一个例子是:

代码语言:javascript
运行
复制
import plotly.graph_objects as go

fig = go.Figure(data=go.Heatmap(
                   z=[[1, None, 30, 50, 1], [20, 1, 60, 80, 30], [30, 60, 1, -10, 20]],
                   x=['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],
                   y=['Morning', 'Afternoon', 'Evening'],
                   hoverongaps = False))
fig.show()

产出:

问题是,假设我有一个(x,y,z)相似的表中的数据。例如,根据上面的情节:

代码语言:javascript
运行
复制
data = [
['Monday', 'Morning', 1],
['Monday', 'Afternoon', 20],
['Monday', 'Evening', 30],
['Tuesday', 'Morning', None],
['Tuesday', 'Afternoon', 1],
['Tuesday', 'Evening', 60],
['Wednesday', 'Morning', 30],
['Wednesday', 'Afternoon', 60],
['Wednesday', 'Evening', 1],
['Thursday', 'Morning', 50],
['Thursday', 'Afternoon', 80],
['Thursday', 'Evening', -10],
['Friday', 'Morning', 1],
['Friday', 'Afternoon', 30],
['Friday', 'Evening', 20]
]

或者在DataFrame中:

代码语言:javascript
运行
复制
import pandas as pd
df = pd.DataFrame(data=data, columns=['x','y','z'])
print(df)

产出:

代码语言:javascript
运行
复制
            x          y     z
0      Monday    Morning   1.0
1      Monday  Afternoon  20.0
2      Monday    Evening  30.0
3     Tuesday    Morning   NaN
4     Tuesday  Afternoon   1.0
5     Tuesday    Evening  60.0
6   Wednesday    Morning  30.0
7   Wednesday  Afternoon  60.0
8   Wednesday    Evening   1.0
9    Thursday    Morning  50.0
10   Thursday  Afternoon  80.0
11   Thursday    Evening -10.0
12     Friday    Morning   1.0
13     Friday  Afternoon  30.0
14     Friday    Evening  20.0

如何轻松地将这些数据转换为Plotly的所需格式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-30 00:34:30

嗯,我必须承认,这不是我最干净的代码,但它完成了任务。

首先,请注意zdata中是如何与巧妙的示例z有不同顺序的。这是因为你的是按日分类的,而他们的是按一天的时间分类的。因此,首先我使用它进行排序,使用自定义字典键,使用numpy的reshape方法将其转换为所需的形状,然后将值转换为浮动。

对于x和y,我使用了列表理解,列表集技巧,然后将它们按期望的顺序排序。

最后,这只是一个阴谋的问题。

代码语言:javascript
运行
复制
import plotly.graph_objects as go
import numpy as np

data = [
['Monday', 'Morning', 1],
['Monday', 'Afternoon', 20],
['Monday', 'Evening', 30],
['Tuesday', 'Morning', None],
['Tuesday', 'Afternoon', 1],
['Tuesday', 'Evening', 60],
['Wednesday', 'Morning', 30],
['Wednesday', 'Afternoon', 60],
['Wednesday', 'Evening', 1],
['Thursday', 'Morning', 50],
['Thursday', 'Afternoon', 80],
['Thursday', 'Evening', -10],
['Friday', 'Morning', 1],
['Friday', 'Afternoon', 30],
['Friday', 'Evening', 20]
]


seq_time = {'Morning':0, 'Afternoon':1, 'Evening':2}
seq_day = {'Monday':0, 'Tuesday': 1, 'Wednesday':2, 'Thursday':3, 'Friday':4}
data.sort(key = lambda x: seq_time[x[1]])
z = np.array([i[2] for i in data]).reshape(3,5).astype(float)
x = sorted(list(set([i[0] for i in data])), key = lambda x: seq_day[x])
y = sorted(list(set([i[1] for i in data])), key = lambda x: seq_time[x])

fig = go.Figure(data=go.Heatmap(
                   z=z,
                   x=x,
                   y=y,
                   hoverongaps = False))
fig.show()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66863128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档