简体   繁体   English

在ggplot2中的特定框上画一条对角线?

[英]Draw a diagonal line on specific boxes in ggplot2?

Hi I am trying to draw diagonal lines on specific boxes which belongs to class2. 嗨,我正在尝试在属于class2的特定盒子上绘制对角线。 I got this: Image1 我得到了: Image1

My dataset: 我的数据集:


samples genes   value   class
sample1 geneA   0.52    class2
sample1 geneB   1       class1
sample1 geneC   1       class1
sample2 geneD   1       class1
sample2 geneB   1       class1
sample2 geneH   0.4     class2
sample2 geneC   1       class1
sample3 geneE   0.44    class2
sample3 geneF   0.34    class2
sample3 geneB   1       class1
sample3 geneI   0.65    class2
sample3 geneC   1       class1
sample4 geneB   0.72    class2
sample4 geneC   0.41    class2
sample5 geneG   1       class1
sample5 geneB   1       class1
sample5 geneC   1       class1

Class1 is marked with yellow lines encircle the boxes. Class1在框上用黄线标记。 Can you please help me to figure out insert diagonal line on boxes belong to class2. 您能帮我弄清楚在属于class2的盒子上插入对角线吗?

I want like this: 我想要这样:

Image2 镜像2

Thanks, kumarr 谢谢,库玛

Here's one way to do it: 这是一种实现方法:

p <- ggplot(df, aes(x=genes,y=samples,fill=class)) + geom_tile()
p + geom_segment(
  aes(x=xmin,xend=xmax,y=ymin,yend=ymax), 
  subset(ggplot_build(p)$data[[1]],fill=="#00BFC4"),
  inherit.aes=F
)

在此处输入图片说明

with

library(ggplot2)
df <- read.table(header=T, text="samples genes   value   class
sample1 geneA   0.52    class2
sample1 geneB   1       class1
sample1 geneC   1       class1
sample2 geneD   1       class1
sample2 geneB   1       class1
sample2 geneH   0.4     class2
sample2 geneC   1       class1
sample3 geneE   0.44    class2
sample3 geneF   0.34    class2
sample3 geneB   1       class1
sample3 geneI   0.65    class2
sample3 geneC   1       class1
sample4 geneB   0.72    class2
sample4 geneC   0.41    class2
sample5 geneG   1       class1
sample5 geneB   1       class1
sample5 geneC   1       class1")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM