[英]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)
之后变得棘手的地方是我不确定这需要如何构建,因此在查看您的绘图时
在这一点上我已经尝试了很多不同的方法,我可以告诉它理解 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.