Plotly Как создать линейную анимацию с именем столбца по оси X и данными столбца по оси Y?

У меня есть фрейм данных, как показано ниже.

Device_ID Die_Version   Temp(deg)   sup(V)  freq    sensitivity THD_94  THD_100 THD_105 THD_110 THD_112 THD_114 THD_115 THD_116 THD_118 THD_120
TTM_041    0x16          -40             1.8    0.8 -25.041          0.009  0.01    0.071   0.206   0.143   0.099   0.1 0.296   4.243   11.888
TTM_041    0x16          -40             1.8    2.4 -25.041          0.009  0.01    0.075   0.206   0.143   0.1 0.101   0.245   4.495   11.728
TTM_041    0x16          -40             1.98   0.8 -25.04       0.009  0.01    0.076   0.207   0.143   0.1 0.102   0.313   4.484   11.844

Мне нужно построить график таким образом, чтобы имена столбцов (THD_94 THD_100 THD_105 THD_110 THD_112 THD_114 THD_115 THD_116 THD_118 THD_120) должны располагаться на оси X, а их значения — на оси Y.

Я попытался с приведенным ниже кодом, но он не работает должным образом.

fig = px.line(df_MM_SPEC, x=px.Constant('col'), y=['THD_94', 'THD_100'], animation_frame='Device_ID')
# fig.update_layout(barmode='group')
fig.show()
 

не могли бы вы добавить свои данные в виде словаря, где ключи - это имена столбцов, а значения dict - это список? Было бы легко воспроизвести ваши данные

Lucas M. Uriarte 25.11.2022 10:13

Спасибо. Я новичок в этом. Если вы не возражаете, не могли бы вы показать мне, как это сделать.

Hari 25.11.2022 10:18

конечно. Сначала дайте вам знать, что это не тот формат, который я просил, а все, что легко читать с пандами, и в то же время легко представить в виде текста. Я думаю, что словари хороши для этого. если у вас есть data_frame, вы можете сделать df.to_dict() и дать результат

Lucas M. Uriarte 25.11.2022 10:31
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
107
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
reshaped_df = df[[col for col in df.columns if 'THD' in col]].T.stack().reset_index()

дает нам некоторые измененные данные, которые выглядят так:

    level_0  level_1       0
0    THD_94        0   0.009
1    THD_94        1   0.009
2    THD_94        2   0.009
3   THD_100        0   0.010
4   THD_100        1   0.010
5   THD_100        2   0.010
6   THD_105        0   0.071
7   THD_105        1   0.075
8   THD_105        2   0.076
9   THD_110        0   0.206
10  THD_110        1   0.206
11  THD_110        2   0.207
12  THD_112        0   0.143
13  THD_112        1   0.143
14  THD_112        2   0.143
15  THD_114        0   0.099
16  THD_114        1   0.100
17  THD_114        2   0.100
18  THD_115        0   0.100
19  THD_115        1   0.101
20  THD_115        2   0.102
21  THD_116        0   0.296
22  THD_116        1   0.245
23  THD_116        2   0.313
24  THD_118        0   4.243
25  THD_118        1   4.495
26  THD_118        2   4.484
27  THD_120        0  11.888
28  THD_120        1  11.728
29  THD_120        2  11.844

Возможно, было бы разумно переименовать ваши столбцы во что-то более логичное, но я оставлю это читателю. С измененными данными анимировать довольно просто:

px.line(reshaped_df, x='level_0', y=0, animation_frame='level_1')

Другие вопросы по теме