复现NC文章华夫图(方块图)华丽展示实验样本构成

样本构成是实验的开端,也是后续分析的基础,所以样本信息在论文中需要详细展示,涉及到你实验的真实性和可重复性。一般样本构成可以使用AI做示例图,有些临床采样,可以使用柱状体的方式展示,我们之前讲过一种。最近在NC文章中看到用华夫图表示样本的构成,感觉效果很好,这里复现一下。原文图如下:

image.png

(Single cell analysis of cribriform prostate cancer reveals cell intrinsic and tumor microenvironmental pathways of aggressive disease)
我的复现结果(一模一样):

image.png


根据原图自己设置一个作图文件,很简单,读入文件加载R包:


install.packages("waffle")
library(waffle)
library(ggwaffle)
library(ggplot2)
library(dplyr)
library(tidyverse)
library(reshape2)
library(forcats)
setwd("D:/KS项目/公众号文章/华夫图")
A <- read.csv("华夫图.csv", header = T, 
              stringsAsFactors = T, 
              fileEncoding = 'GBK')

数据转化、设置因子顺序:

df=melt(A,id="patient")
df$variable <- as.factor(df$variable)
df$variable <- fct_inorder(df$variable)#x轴因子顺序不变
colnames(df)
df$patient <- as.factor(df$patient)
df$patient <- fct_rev(df$patient)#y轴逆序,保持与文章一致

设定对应颜色:

col_group <- setNames(c("#B5C8E8",
                        "#4475C7",
                        "#1A3564",
                        "#F2B900",
                        "#FFE79A",
                        "#CD9AFF",
                        "#00B1F0",
                        "#C6E1B5",
                        "#79B84C"),
                        c('Grade Group2',
                          'Grade Group3',
                          "Grade Group5",
                          "PSA<10ng/ml",
                          "PSA>10ng/ml",
                          "Present",
                          "Absent",
                          "≤ pT3a",
                          "≥ pT3a"))

ggplot结合waffle作图,复刻一模一样:


ggplot(df, aes(variable, patient, fill = value)) + 
  geom_waffle()+
  theme(panel.background = element_blank(),
    axis.title = element_blank(),
    axis.ticks = element_blank(),
    legend.title = element_blank(),
    legend.position = "right",
    axis.text.x = element_text(color = 'black',angle = 45, 
                               size = 12,hjust = 0,vjust = 0.1),
    axis.text.y = element_text(color = 'black',size = 12))+
  scale_fill_manual("",values = col_group)+
  scale_x_discrete(position = "top")+
  guides(fill = guide_legend(override.aes = list(size=10),
                             label.position ='left',
                             label.theme = element_text(size = 12)))

 

image.png

也可以设置圆形:


ggplot(df, aes(variable, patient, color = value)) + 
  geom_waffle(tile_shape='circle', size=8)+
  theme(panel.background = element_blank(),
        axis.title = element_blank(),
        axis.ticks = element_blank(),
        legend.title = element_blank(),
        legend.position = "right",
        axis.text.x = element_text(color = 'black',angle = 45, 
                                   size = 12,hjust = 0,vjust = 0.1),
        axis.text.y = element_text(color = 'black',size = 12))+
  scale_color_manual("",values = col_group)+
  scale_x_discrete(position = "top")+
  guides(fill = guide_legend(override.aes = list(size=8),
                             label.position ='left',
                             label.theme = element_text(size = 12)))

 

image.png

好了,这就是今天的内容了,作图数据和注释代码已上传群文件!我又突然想起一个事情,这样的方块图也不仅仅展示样本,还可以作为其他图的注释配合使用,真是不错。感兴趣的探索一下,用在自己文章吧!更多精彩请至我的公众号《KS科研分享与服务》!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值