请帮我制作一张热图。
我想要制作这个数据集的热图(数据集更大,但这将显示结构):
data.str <-
structure(
list(
Metabolite = c(
"Glucose_%",
"Fructose_%",
"Sugars_%",
"Sugars.as.mono_%",
"Starch_%",
"Starch.as.mono_%",
"Glutamic_%",
"Proline_%",
"Biotin_%",
"C20.2cn6_%"
),
Difference_S_HDL_CE_pct = c(
27.0580967,
29.4741588,
30.6727965,
37.044534,
0.00592,
0.00924,
2.8089622,
4.3284966,
3.616572,
16.6234106
),
Difference_L_HDL_TG = c(
20.3426932,
19.6578323,
6.1540709,
6.618907,
20.7397107,
22.7363078,
5.7014121,
6.0341221,
5.9002733,
5.0788391
),
Difference_Gln = c(
20.2203384,
21.9353406,
17.1303398,
17.3148438,
8.7804598,
7.0612042,
0.5848933,
0.3856946,
0.0748362,
10.761994
),
Difference_S_LDL_FC_pct = c(
20.1171041,
21.1194979,
19.0084278,
22.7941105,
0.6624931,
1.2516315,
0.4276689,
1.3559095,
1.7227713,
18.2480865
),
Difference_Pyruvate = c(
17.5854511,
19.9410449,
12.7105925,
11.9623687,
10.4788242,
8.6559229,
0.0189435,
0.0239544,
0.00312,
16.7369868
),
Difference_L_LDL_TG = c(
13.250508,
13.9865028,
13.4782952,
14.1116228,
4.0569956,
3.3975936,
0.8144706,
0.7677175,
0.0572463,
14.4629904
),
Difference_S_HDL_C_pct = c(
12.9346568,
13.1410302,
16.6905244,
22.6788084,
1.7590544,
1.3980602,
2.9658478,
4.8456946,
2.7936213,
27.68029
),
Difference_S_HDL_PL_pct = c(
12.864684,
11.9193723,
10.8118128,
11.8431789,
1.0692856,
1.4855054,
1.9670692,
1.3530411,
8.5227632,
-1.6739852
),
Difference_M_LDL_TG_pct = c(
12.8530009,
11.4667269,
13.5677286,
16.3305456,
0.9506285,
0.5322617,
0.8908791,
1.898937,
2.9490729,
29.5990618
),
Difference_L_LDL_C_pct = c(
12.5509812,
13.624991,
12.482877,
13.1641219,
0.3197067,
0.0195839,
8.7725257,
7.2044468,
0.0122509,
8.4407425
),
Difference_IDL_TG = c(
12.0014,
11.378059,
6.0707129,
6.2593626,
8.3150096,
9.6032892,
4.2182798,
3.8636934,
4.2984429,
1.8889026
)
),
row.names = c(NA, 10L),
class = "data.frame"
)
我的最大值在40左右,所以我希望标度在-2到45之间。颜色是红色,颜色越深,价值越高。
这是我正在寻找的一个很好的例子
唯一的区别是,我希望它是红色的,标度从-2到40,我想把y轴上的变量划分成子群(例如,如果我想显示y-轴上较低的三个变量在这个蓝色热图“col1,col10和col 2”中属于一个特定的组,比如脂质,而彼此的3个变量来自相同的子群,如比率,酮体等等)。
代谢物的差异应该在y轴上,营养物质应该在x轴上。另外,我需要超过5的值被打印在相应的方格上。
提前谢谢你。
发布于 2022-07-14 09:03:14
除了对y轴变量进行分组之外,下面的代码完成了您所要求的大部分内容。您没有提供任何具体的信息来说明您希望如何显示这些组(包括面、分界线、不同颜色的标签或其他方式),也无法知道您希望如何定义这些分组(示例数据中的那些组似乎都与脂质有关,除了Gln
之外,我不知道这意味着什么,尽管这里有一些特定领域的知识)。
library(tidyverse)
pivot_longer(data.str, -1) %>%
ggplot(aes(Metabolite, name, fill = value)) +
geom_tile() +
geom_text(aes(label = ifelse(value > 5, round(value), '')),
color = 'white') +
scale_fill_gradient(low = 'red', high = '#560000') +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
coord_equal()
https://stackoverflow.com/questions/72977660
复制相似问题