1

我在这里有一些数据[在 .txt 文件中],我将其读入数据框,

mydf <- read.table("data.txt", header=T,sep="\t")

接下来我使用以下代码融化这个数据框,

df_mlt <-melt(mydf, id=names(mydf)[1], variable = "cols")

现在我想将此数据绘制为仅显示 的值的箱线图x>0,因此为此我使用以下代码,

plt_bx <-   ggplot(df_mlt, aes(x=ID1,y=value>0, color=cols))+geom_boxplot()

但结果图如下所示,

箱线图的输出

但是,我需要的是仅将 x 的正值显示为同一绘图层中的单个箱形图。有人可以建议我在上面的代码中需要更改什么以获得正确的输出,谢谢。

4

3 回答 3

2
plt_bx <- ggplot(subset(df_mlt, value > 0), aes(x=ID1,y=value, color=cols)) + geom_boxplot()

您需要对数据框进行子集化以删除不需要的值。现在您正在绘制value > 0TRUE 或 FALSE,而不是仅包含大于 0 的值的箱线图。

于 2014-01-31T16:55:58.340 回答
1

根据@BrodieG 的建议,以下代码产生如下图,

plt_bx <- ggplot(subset(df_mlt, value > 0), aes(x=ID1,y=value,group=ID1)) + 
  geom_boxplot(aes(color=ID1),outlier.colour="orangered", outlier.size=3) +
  scale_y_log10(labels = trans_format("log10", math_format(10^.x))) +
  theme_bw() +
  theme(legend.text=element_text(size=14), legend.title=element_text(size=14))+
  theme(axis.text=element_text(size=26)) +
  theme(axis.title=element_text(size=22,face="bold")) +
  labs(x = "x", y = "y", colour="Values") +
  annotation_logticks(sides = "rl")
plt_bx

在此处输入图像描述

于 2014-01-31T18:16:25.317 回答
1

我改进了我的答案,如果将 aes 中的颜色分配为熔化数据帧中 id 的一个因素,箱线图的轮廓将显示不同的颜色。IE,geom_boxplot(aes(color=factor(ID1)))

以下代码产生如下图,

plt <- ggplot(subset(df_mlt, value > 0), aes(x=ID1,y=value)) + 
  geom_boxplot(aes(color=factor(ID1))) +
  scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x), labels = trans_format("log10", math_format(10^.x))) +
  theme_bw() +
  theme(legend.text=element_text(size=14), legend.title=element_text(size=14))+
  theme(axis.text=element_text(size=20)) +
  theme(axis.title=element_text(size=20,face="bold")) +
  labs(x = "x", y = "y",colour="legend" ) +
  annotation_logticks(sides = "rl") +
  theme(panel.grid.minor = element_blank()) +
  guides(title.hjust=0.5) +
  theme(plot.margin=unit(c(0,1,0,0),"mm")) 
plt

输出图

于 2014-02-03T16:06:50.337 回答