首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用R表示相关的热图

用R表示相关的热图
EN

Stack Overflow用户
提问于 2022-07-14 08:39:52
回答 1查看 30关注 0票数 0

请帮我制作一张热图。

我想要制作这个数据集的热图(数据集更大,但这将显示结构):

代码语言:javascript
运行
复制
 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的值被打印在相应的方格上。

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-14 09:03:14

除了对y轴变量进行分组之外,下面的代码完成了您所要求的大部分内容。您没有提供任何具体的信息来说明您希望如何显示这些组(包括面、分界线、不同颜色的标签或其他方式),也无法知道您希望如何定义这些分组(示例数据中的那些组似乎都与脂质有关,除了Gln之外,我不知道这意味着什么,尽管这里有一些特定领域的知识)。

代码语言:javascript
运行
复制
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()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72977660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档