繁体   English   中英

使用分类数据绘制曲面图

[英]Plotly Surface Plot with Categorical Data

试图准确理解 Surface 绘图输入如何用于绘图。 我见过的每个例子的所有值都是数字,并且所需的输入是 x 或 y 是一个类别。

在一个测试示例中,我有 3 个状态,每周都有一个“计数”值。 我想每周查看每个州“计数”的进展情况。 数据最初的结构是这样的

import pandas as p
import plotly.graph_objects as go

# dummy categorical data
labels = ['state','week','count']
test_data = [
['Washington', 1, 5],
['Washington', 2, 3],
['Washington', 3, 1],
['Washington', 4, 0],
['California', 1, 2],
['California', 2, 4],
['California', 3, 6],
['California', 4, 8],
['New York', 1, 0],
['New York', 2, 5],
['New York', 3, 5],
['New York', 4, 15]]
dataFrame = p.DataFrame(test_data, columns=labels)

之后变得棘手的地方是我不确定这需要如何构建,因此在查看您的绘图时

  • 包含每周的 X 轴
  • 包含每个状态的 Y 轴
  • Z 轴显示每个状态的计数,每周一次

在这一点上我已经尝试了很多不同的方法,我可以告诉它理解 Z 的最大值,因为色阶条上升到数据框中的最大值,但我不知道我需要这样做每个状态都正确显示为自己的刻度,每周显示在另一个轴上,z 直接对应于数据框中的周:状态“计数”值。 尝试的方法中没有一个是完全正确的,结果如此不同,在这里展示它们不会增加价值。

有没有人有一个带有真实分类数据的实际工作示例,或者知道构造上述数据框的方法,以便表面图随着时间的推移按状态显示计数?


一种更具体的提问方式是:你如何获取一个数据框,其中 3 列应该是你的 X、Y 和 Z,并让它们在 Surface 图中这样显示? 在 X 和 Y 之间,其中一个需要是表示类别的字符串,另一个需要能够是日期时间或整数。

啊,它需要与热图相同的输入。 X 和 Y 更像是标签值,而您的 z 数据将包含所有绘制的值。 我能够使用前面的示例将它组合在一起

# grab x/y labels, create storage for z data
states = dataFrame['state'].unique()
states.sort()
weeks = dataFrame['week'].unique()
weeks.sort()
z_data = []

# extract z data using x,y coordinates within the dataframe
for week in weeks:
  row = []
  for state in states:
    val = dataFrame[
      (dataFrame['state'] == state) &
      (dataFrame['week'] == week)]['count'].values[0]
    row.append(val)
  z_data.append(row)


# create and show the Surface plot
trace = go.Surface(x=states, y=weeks, z=z_data)
data = [trace]
fig = go.Figure(data=data)
fig.show()

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM