[英]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.