I made this px.bar
plot from a df of 28 rows by 300 columns. The 'Strain' represented the individual samples and then the rest of the columns are the variables in that particular sample.
data = {'Strain': {0: 'incub_1016',
1: 'incub_1227',
2: 'incub_1228',
3: 'incub_1230',
4: 'incub_1233',
5: 'incub_1235',
6: 'incub_1238',
7: 'incub_1239',
8: 'incub_1244',
9: 'incub_1255',
10: 'incub_1260',
11: 'incub_1262',
12: 'incub_1263',
13: 'incub_1297',
14: 'incub_1630',
15: 'incub_1732',
16: 'incub_2101',
17: 'incub_634',
18: 'incub_730',
19: 'incub_784',
20: 'incub_AHU9424',
21: 'incub_GiK1',
22: 'incub_SAS405',
23: 'annotation network number',
24: 'retention time (min)',
25: 'row m/z',
26: 'row ID',
27: 'adduct (ion identity)',
28: 'neutral mass (ion identity)'},
0: {0: 0.0,
1: 0.0,
2: 0.0,
3: 0.0,
4: 45626.0,
5: 61138.0,
6: 0.0,
7: 0.0,
8: 0.0,
9: 0.0,
10: 0.0,
11: 0.0,
12: 0.0,
13: 0.0,
14: 0.0,
15: 0.0,
16: 0.0,
17: 0.0,
18: 0.0,
19: 0.0,
20: 0.0,
21: 0.0,
22: 0.0,
23: 0.0,
24: 0.825,
25: {253.07, 293.0633},
26: '{1, 2}',
27: "{'[M-H2O+H]+', '[M+Na]+'}",
28: 270.07394},
1: {0: 0.0,
1: 0.0,
2: 0.0,
3: 0.0,
4: 0.0,
5: 0.0,
6: 0.0,
7: 0.0,
8: 0.0,
9: 0.0,
10: 0.0,
11: 0.0,
12: 0.0,
13: 0.0,
14: 39856.0,
15: 0.0,
16: 0.0,
17: 0.0,
18: 0.0,
19: 0.0,
20: 0.0,
21: 0.0,
22: 23452.0,
23: 1.0,
24: 0.93,
25: {771.2478, 793.2298},
26: '{9, 10}',
27: "{'[M+H]+', '[M+Na]+'}",
28: 770.24056},
2: {0: 89549.0,
1: 61740.0,
2: 70953.0,
3: 1009036.0,
4: 915043.0,
5: 268206.0,
6: 508191.0,
7: 284849.0,
8: 1039166.0,
9: 93727.0,
10: 16200.0,
11: 177996.0,
12: 85926.0,
13: 0.0,
14: 913501.0,
15: 0.0,
16: 0.0,
17: 0.0,
18: 98502.0,
19: 0.0,
20: 0.0,
21: 0.0,
22: 91080.0,
23: 4.0,
24: 1.34,
25: {265.1432, 305.136, 587.2826},
26: '{25, 26, 27}',
27: "{'[2M+Na]+', '[M-H2O+H]+', '[M+Na]+'}",
28: 282.14683},
3: {0: 430466.0,
1: 339729.0,
2: 220069.0,
3: 238829.0,
4: 287711.0,
5: 316194.0,
6: 172840.0,
7: 169638.0,
8: 129705.0,
9: 445204.0,
10: 375693.0,
11: 246708.0,
12: 201585.0,
13: 142085.0,
14: 312694.0,
15: 161958.0,
16: 287455.0,
17: 257876.0,
18: 194061.0,
19: 226707.0,
20: 203649.0,
21: 183741.0,
22: 239926.0,
23: 5.0,
24: 1.37,
25: {215.1431},
26: '{44}',
27: "{'[M-H2O+H]+'}",
28: 232.14662},
4: {0: 9433698.0,
1: 7459427.0,
2: 4768134.0,
3: 5143362.0,
4: 6458836.0,
5: 6440897.0,
6: 3500930.0,
7: 3444983.0,
8: 2650205.0,
9: 10139207.0,
10: 8655312.0,
11: 5341100.0,
12: 4506229.0,
13: 3280253.0,
14: 6770021.0,
15: 3704129.0,
16: 6064392.0,
17: 5886656.0,
18: 4240117.0,
19: 4963099.0,
20: 4623832.0,
21: 4232354.0,
22: 5433527.0,
23: 6.0,
24: 1.37,
25: {233.1536, 329.1783},
26: '{32, 46}',
27: "{'[M+DMSO+H]+', '[M-H2O+H]+'}",
28: 250.15717},
5: {0: 11045184.0,
1: 9396327.0,
2: 7142265.0,
3: 6505800.0,
4: 7457517.0,
5: 8245296.0,
6: 4828589.0,
7: 5487263.0,
8: 3719185.0,
9: 12251745.0,
10: 11403435.0,
11: 6825563.0,
12: 5564660.0,
13: 4905336.0,
14: 8563499.0,
15: 5605669.0,
16: 8038377.0,
17: 7907239.0,
18: 6135822.0,
19: 6920118.0,
20: 6794400.0,
21: 7433341.0,
22: 6985700.0,
23: 7.0,
24: 1.37,
25: {251.1642, 269.1749, 286.2013, 291.1567, 559.324},
26: '{35, 37, 38, 39, 43}',
27: "{'[2M+Na]+', '[M+H]+', '[M-H2O+H]+', '[M+NH4]+', '[M+Na]+'}",
28: 268.1676},
6: {0: 1930246.0,
1: 1614646.0,
2: 1224044.0,
3: 1192983.0,
4: 1347877.0,
5: 1412026.0,
6: 915319.0,
7: 974165.0,
8: 698909.0,
9: 2074739.0,
10: 1895785.0,
11: 1211904.0,
12: 943046.0,
13: 741072.0,
14: 1503547.0,
15: 840021.0,
16: 1320391.0,
17: 1203124.0,
18: 991559.0,
19: 1167256.0,
20: 1033043.0,
21: 1058768.0,
22: 1199289.0,
23: 8.0,
24: 1.37,
25: {205.1587, 223.1693},
26: '{40, 45}',
27: "{'[M+H]+', '[M-H2O+H]+'}",
28: 222.16229},
7: {0: 150311.0,
1: 92311.0,
2: 213523.0,
3: 361753.0,
4: 373426.0,
5: 511960.0,
6: 260362.0,
7: 178298.0,
8: 377959.0,
9: 47930.0,
10: 0.0,
11: 230438.0,
12: 24470.0,
13: 41380.0,
14: 0.0,
15: 139752.0,
16: 25114.0,
17: 0.0,
18: 39291.0,
19: 0.0,
20: 204010.0,
21: 134354.0,
22: 114338.0,
23: 9.0,
24: 1.375,
25: {201.1274, 219.1381},
26: '{50, 28}',
27: "{'[M+H]+', '[M-H2O+H]+'}",
28: 218.13099},
8: {0: 597020.0,
1: 262780.0,
2: 1047540.0,
3: 307416.0,
4: 0.0,
5: 0.0,
6: 0.0,
7: 0.0,
8: 0.0,
9: 129152.0,
10: 0.0,
11: 665404.0,
12: 105004.0,
13: 186484.0,
14: 0.0,
15: 708089.0,
16: 0.0,
17: 261455.0,
18: 270555.0,
19: 0.0,
20: 909808.0,
21: 505462.0,
22: 767974.0,
23: 10.0,
24: 1.46,
25: {231.138},
26: '{56}',
27: "{'[M-H2O+H]+'}",
28: 248.14153},
9: {0: 944071.0,
1: 383550.0,
2: 1451871.0,
3: 464522.0,
4: 0.0,
5: 173399.0,
6: 420100.0,
7: 306671.0,
8: 233738.0,
9: 225107.0,
10: 0.0,
11: 1438880.0,
12: 117421.0,
13: 242607.0,
14: 165271.0,
15: 1061080.0,
16: 177653.0,
17: 192563.0,
18: 526876.0,
19: 0.0,
20: 1338201.0,
21: 931589.0,
22: 1218056.0,
23: 11.0,
24: 1.46,
25: {249.1486, 267.1592, 284.1857, 289.1411, 555.2932},
26: '{57, 59, 61, 62, 63}',
27: "{'[2M+Na]+', '[M+H]+', '[M-H2O+H]+', '[M+NH4]+', '[M+Na]+'}",
28: 266.15201},
10: {0: 0.0,
1: 0.0,
2: 0.0,
3: 0.0,
4: 0.0,
5: 193621.0,
6: 0.0,
7: 0.0,
8: 0.0,
9: 0.0,
10: 0.0,
11: 0.0,
12: 0.0,
13: 0.0,
14: 0.0,
15: 0.0,
16: 0.0,
17: 0.0,
18: 0.0,
19: 0.0,
20: 0.0,
21: 0.0,
22: 0.0,
23: 12.0,
24: 1.52,
25: {344.2545, 366.2364},
26: '{70, 71}',
27: "{'[M+H]+', '[M+Na]+'}",
28: 343.24719},
11: {0: 0.0,
1: 0.0,
2: 0.0,
3: 0.0,
4: 0.0,
5: 0.0,
6: 0.0,
7: 0.0,
8: 0.0,
9: 0.0,
10: 0.0,
11: 0.0,
12: 0.0,
13: 0.0,
14: 822470.0,
15: 0.0,
16: 0.0,
17: 0.0,
18: 0.0,
19: 0.0,
20: 0.0,
21: 0.0,
22: 0.0,
23: 13.0,
24: 1.5266666666666666,
25: {300.1805, 305.1361, 587.2829},
26: '{73, 77, 69}',
27: "{'[2M+Na]+', '[M+NH4]+', '[M+Na]+'}",
28: 282.14679},
12: {0: 3424332.0,
1: 3837520.0,
2: 3331768.0,
3: 6917216.0,
4: 6399089.0,
5: 5007141.0,
6: 6782264.0,
7: 8085729.0,
8: 7979350.0,
9: 3285058.0,
10: 0.0,
11: 5853626.0,
12: 4363960.0,
13: 5716803.0,
14: 7323522.0,
15: 4652426.0,
16: 0.0,
17: 2748719.0,
18: 3197540.0,
19: 1535836.0,
20: 3171135.0,
21: 0.0,
22: 3857165.0,
23: 14.0,
24: 1.58,
25: {213.1273, 231.1379},
26: '{76, 94}',
27: "{'[M+H]+', '[M-H2O+H]+'}",
28: 230.13087},
13: {0: 6321702.0,
1: 6976419.0,
2: 5928510.0,
3: 12720283.0,
4: 11286563.0,
5: 8460642.0,
6: 12082640.0,
7: 14763320.0,
8: 14135460.0,
9: 5683067.0,
10: 0.0,
11: 10419047.0,
12: 7715883.0,
13: 6774472.0,
14: 12940088.0,
15: 5728413.0,
16: 0.0,
17: 2511516.0,
18: 5808180.0,
19: 2545978.0,
20: 4484358.0,
21: 0.0,
22: 7268231.0,
23: 16.0,
24: 1.6066666666666667,
25: {249.1485, 267.1591, 284.1856, 289.141, 345.1732, 555.2925},
26: '{87, 88, 89, 91, 93, 95}',
27: "{'[M+DMSO+H]+', '[2M+Na]+', '[M+H]+', '[M-H2O+H]+', '[M+NH4]+', '[M+Na]+'}",
28: 266.15188},
14: {0: 1340776.0,
1: 1433754.0,
2: 1272536.0,
3: 2599105.0,
4: 2308814.0,
5: 1940477.0,
6: 2472482.0,
7: 3069386.0,
8: 2946943.0,
9: 1187110.0,
10: 572818.0,
11: 2139380.0,
12: 1630111.0,
13: 1735297.0,
14: 2675080.0,
15: 1546371.0,
16: 0.0,
17: 830396.0,
18: 1215791.0,
19: 630765.0,
20: 1099071.0,
21: 0.0,
22: 1496092.0,
23: 17.0,
24: 1.61,
25: {203.143, 221.1537},
26: '{90, 92}',
27: "{'[M+H]+', '[M-H2O+H]+'}",
28: 220.14658},
15: {0: 0.0,
1: 0.0,
2: 0.0,
3: 0.0,
4: 54051.0,
5: 173175.0,
6: 0.0,
7: 0.0,
8: 26801.0,
9: 0.0,
10: 0.0,
11: 0.0,
12: 0.0,
13: 0.0,
14: 0.0,
15: 0.0,
16: 0.0,
17: 0.0,
18: 0.0,
19: 0.0,
20: 0.0,
21: 0.0,
22: 0.0,
23: 18.0,
24: 1.63,
25: {253.1432},
26: '{99}',
27: "{'[M-H2O+H]+'}",
28: 270.14678},
16: {0: 0.0,
1: 0.0,
2: 0.0,
3: 0.0,
4: 0.0,
5: 1002262.0,
6: 0.0,
7: 0.0,
8: 62247.0,
9: 0.0,
10: 0.0,
11: 0.0,
12: 0.0,
13: 46486.0,
14: 0.0,
15: 0.0,
16: 0.0,
17: 0.0,
18: 0.0,
19: 0.0,
20: 0.0,
21: 0.0,
22: 0.0,
23: 19.0,
24: 1.6349999999999998,
25: {271.1538, 311.1468},
26: '{100, 102}',
27: "{'[M-H2O+H]+', '[M+Na]+'}",
28: 288.15757},
17: {0: 0.0,
1: 0.0,
2: 0.0,
3: 0.0,
4: 0.0,
5: 0.0,
6: 0.0,
7: 0.0,
8: 0.0,
9: 0.0,
10: 0.0,
11: 0.0,
12: 14195.0,
13: 0.0,
14: 0.0,
15: 0.0,
16: 0.0,
17: 0.0,
18: 0.0,
19: 0.0,
20: 0.0,
21: 0.0,
22: 0.0,
23: 21.0,
24: 1.73,
25: {322.2378, 340.2481},
26: '{120, 119}',
27: "{'[M+H]+', '[M-H2O+H]+'}",
28: 339.24123},
18: {0: 4151940.0,
1: 3168271.0,
2: 3542558.0,
3: 3837368.0,
4: 0.0,
5: 3010259.0,
6: 3945764.0,
7: 5099517.0,
8: 4772564.0,
9: 2981016.0,
10: 2317483.0,
11: 4810564.0,
12: 2999389.0,
13: 5973016.0,
14: 3879754.0,
15: 7241427.0,
16: 9348321.0,
17: 15955418.0,
18: 3029145.0,
19: 2621519.0,
20: 5229218.0,
21: 2648685.0,
22: 4069449.0,
23: 22.0,
24: 1.8516666666666668,
25: {249.1485, 267.1591, 284.1856, 289.1409, 345.1726, 555.2926},
26: '{129, 132, 133, 135, 138, 143}',
27: "{'[2M+Na]+', '[M+DMSO+H]+', '[M+H]+', '[M-H2O+H]+', '[M+NH4]+', '[M+Na]+'}",
28: 266.15178}}
#create and write fig
fig = px.bar(df_plot, y="Strain", x=df_plot.columns[1:],
orientation="h", template="simple_white",
width=800, height=1000,
color_discrete_sequence=px.colors.qualitative.Light24)
fig.show()
from those 28 rows, the last six correspond to metadata of the individual variables. is there a way i can use those line in the hoverdata?
The idea would be to unpivot df_plot
from wide to long format (see DataFrame.melt()
) so that you can then reassign the metadata to their respective variable by adding one column for each metadata :
df = pd.DataFrame(data)
# Separate variable metadata from sample data
df_plot = df.iloc[:23, :]
df_meta = df.iloc[23:, :].astype(str).rename(columns={'Strain': 'metadata'})
# Unpivot df_plot from wide to long format
df_plot = pd.melt(df_plot, id_vars='Strain')
# Add a column for each metadata
for index, metadata in df_meta['metadata'].items():
df_plot[metadata] = df_plot['variable'].map(lambda x: df_meta.at[index, x])
And then you can specify in hover_data
the (metadata) columns that will be added in the hover tooltip, eg. adding all of them :
fig = px.bar(df_plot, y='Strain', x='value', color='variable', orientation='h',
hover_data=df_meta['metadata'],
template='simple_white', width=800, height=1000,
color_discrete_sequence=px.colors.qualitative.Light24)
fig.show()