固定使用mutate函数和ggplot

时间:2018-10-15 10:20:40

标签: r ggplot2 dplyr

我正在尝试使用tidyverse软件包创建基于文本的热图。尽管我能够生成热图,但X标签的排列没有按照我的数据提供的顺序进行。

我希望提供我提供的X标签。虽然确实找到了一些解决方案,但以某种方式我无法在代码中应用它们。我也不想硬编码因子函数中的列。代码如下:

df <- read.table('Mydata_sheet_test.txt', sep="\t", header=TRUE)
df %>% 
  gather(col, Value, -Sample_names) %>% 
  mutate(row = factor(Sample_names, levels = rev(unique(Sample_names))),
         Value = factor(Value)) %>% 
  ggplot(aes(col, row, fill = Value)) + 
  geom_tile(colour="black") + 
  labs(x = "Chromosome names", y = "samples") + 
  theme(axis.text.x = element_text(angle=21,vjust=0.5)) +
  scale_fill_brewer(palette="Paired")

PS:我仍在研究数据处理的基本知识和基础知识,如果有任何简单的解决方案,我很抱歉,我错过了。

主要代码提供:Maurits Evers

我的数据如下: sample_ID,C1.P,C1.Q,C2.P,C2.Q,C3.P,C3.Q,C4.P,C4.Q,C10.P,C10.Q,C20.P,C20.Q < / p>

sam000086,TLM,TLM,TLM,TLM,3 cp,3 cp,3 cp,3 cp,3 cp,3 cp,3 cp,3 cp

sam000046 ,,,,,,,,,,,,

sam000028 、、、、、、、 3 cp,3 cp,3 cp,3 cp,

sam000092,,3 cp,TLM,TLM,TLM,TLM,3 cp,3 cp,3 cp,3 cp,TLM,TLM

sam000080、3 cp,TLM,TLM,3 cp,3 cp,3 cp,3 cp,3 cp,3 cp

........如此

1 个答案:

答案 0 :(得分:0)

如果您有ggplot(aes(col, row, fill = Value))ggplot(aes(as_factor(col), row, fill = Value)),请将tidyverse更改为forcats

否则将其更改为ggplot(aes(factor(col, levels = unique(col)), row, fill = Value))