簡體   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