1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
import random
import plotly.express as px
#### Remove these ####
heatmap_dir = "heatmap_images"
def generate_random_data(data_stop: float = 2, width: int = 10, height: int = 30):
"""
This is mostly a utility function to be used to generate random data, useful
for development of the heatmap generation code, without access to the actual
database data.
"""
return [[random.uniform(0,data_stop) for i in range(0, width)]
for j in range(0, height)]
def heatmap_x_axis_names():
return [
"UCLA_BXDBXH_CARTILAGE_V2::ILM103710672",
"UCLA_BXDBXH_CARTILAGE_V2::ILM2260338",
"UCLA_BXDBXH_CARTILAGE_V2::ILM3140576",
"UCLA_BXDBXH_CARTILAGE_V2::ILM5670577",
"UCLA_BXDBXH_CARTILAGE_V2::ILM2070121",
"UCLA_BXDBXH_CARTILAGE_V2::ILM103990541",
"UCLA_BXDBXH_CARTILAGE_V2::ILM1190722",
"UCLA_BXDBXH_CARTILAGE_V2::ILM6590722",
"UCLA_BXDBXH_CARTILAGE_V2::ILM4200064",
"UCLA_BXDBXH_CARTILAGE_V2::ILM3140463"]
#### END: Remove these ####
# Grey + Blue + Red
def generate_heatmap():
rows = 20
data = generate_random_data(height=rows)
y = (["%s"%x for x in range(1, rows+1)][:-1] + ["X"]) #replace last item with x for now
fig = px.imshow(
data,
x=heatmap_x_axis_names(),
y=y,
width=500)
fig.update_traces(xtype="array")
fig.update_traces(ytype="array")
# fig.update_traces(xgap=10)
fig.update_xaxes(
visible=True,
title_text="Traits",
title_font_size=16)
fig.update_layout(
coloraxis_colorscale=[
[0.0, '#3B3B3B'], [0.4999999999999999, '#ABABAB'],
[0.5, '#F5DE11'], [1.0, '#FF0D00']])
fig.write_html("%s/%s"%(heatmap_dir, "test_image.html"))
return fig
|