kegg的某种svg展示图

#!perl
use warnings;
use strict;
use SVG;
use File::Basename qw(basename);

die "perl $0 <sample.list> <pathway.sorted> <outprefix>
Note: support 24 colors to sample~
" if @ARGV != 3;

my (@file, @pwtmp, @pw2sp);

my $i = 0;
open PW, $ARGV[1] or die $!;
while(<PW>)
{
	chomp;
	my @tmp = split /\t/;
	$pwtmp[$i]{$tmp[0]} = 1;
	$i ++;
}

my $f = 0;
open SP, $ARGV[0] or die $!;
while(<SP>)
{
	chomp;
	my @ft = split;
	my $name = basename($ft[0]);
	my ($id) = $ft[0] =~ /^([^\.]+)/;
	push @file, $ft[1];
	open FA, $ft[0] or die $!;
	<FA>;
	for(my $n = 0; $n < @pwtmp; $n ++)
	{
		$pw2sp[$f][$n] = 1;
	}
	while(my $line = <FA>)
	{
		chomp($line);
		my @tmp = split /\t/, $line;
		for(my $j = 0; $j < @pwtmp; $j ++)
		{
			if(exists $pwtmp[$j]{$tmp[0]})
			{
				$pw2sp[$f][$j] = $tmp[4];
				last;
			}
		}
	}
	$f ++;
}

my $fn = @file;
my $pwn = @pwtmp;

my $svg = SVG->new(width => ($fn * 50 + 1100), height => 
setwd("/Volumes/芦苇常用/DPN学习/1.差异分析/第四版差异分析") A <- KEGG library(ggplot2) library(forcats) library(ggsci) library(dplyr) library(tidyr) # 需要加载tidyr包以使用complete函数 # 数据处理 # 将Group转换为因子,并指定水平和标签(确保与颜色映射一致) A$Group <- factor(A$Group, levels = c("DM_VS_CN", "DPN_VS_CN", "DPN_VS_DM"), labels = c("DM vs CN", "DPN vs CN", "DPN vs DM")) A$Description <- as.factor(A$Description) A$Description <- fct_inorder(A$Description) # 分组排序,并确保每个通路在每个组中都有记录(使用complete填充缺失组) A_sorted <- A %>% complete(Description, Group, fill = list(Count = 0)) %>% # 确保每个通路在每个组都有记录 group_by(Group) %>% arrange(desc(Count), .by_group = TRUE) %>% ungroup() %>% # 重新构建Description的因子水平,按每个组内的Count排序后的顺序 mutate(Description = factor(Description, levels = unique(Description))) # 创建包含组别和计数的标签列 A_sorted <- A_sorted %>% mutate(Group_Label = paste0(Group, " (", Count, ")")) # 计算标签上移距离 nudge_value <- 0.08 * max(A_sorted$Count) # 颜色映射 npg_colors <- c( "DM vs CN" = "#E64B35", "DPN vs CN" = "#4DBBD5", "DPN vs DM" = "#00A087" ) # 绘 ggplot(A_sorted, aes(x = Description, y = Count, fill = Group)) + geom_bar( stat = "identity", position = position_dodge(width = 0.8), width = 0.7, color = "black", size = 0.3 ) + scale_fill_manual(values = npg_colors) + # 应用颜色 geom_text( aes(label = Count), position = position_dodge(width = 0.8), vjust = -0.5, size = 3 ) + theme_bw() + labs(x = "KEGG Pathway", y = "Gene Count") + theme( axis.text.x = element_text(angle = 45, hjust = 1, size = 10), legend.position = "top", legend.title = element_blank() ) + scale_y_continuous(expand = expansion(mult = c(0, 0.1))) # 形输出 ggsave("kegg_plot_fixed.svg", width = 12, height = 7, dpi = 300)你就在这个代码上修改,解决DPN VS CN柱子没有颜色的问题
10-07
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值