请帮我制作一张热图。
我想要制作这个数据集的热图(数据集更大,但这将显示结构):
data.str <-结构(列表(代谢物= 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,( 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-13 17:52:52
为了使用现有的答案(How to create a simple heatmap in R),您需要将数据转换为长格式。
library(tidyverse)
data.str |>
pivot_longer(everything()) |>
group_by(name) |>
mutate(row = row_number()) |>
ggplot(aes(x = row, y = name, fill = value)) +
geom_tile() +
scale_fill_gradient(low = "white", high = "red", name = "Your Legend")
输出:
https://stackoverflow.com/questions/72970447
复制相似问题