1

我对ggplot2很陌生,如果这篇文章太愚蠢,请原谅我。我使用以下代码绘制数据,但无法获得发布所需的样式。

在输出中,我需要:

  1. 一个传奇。在我的数据案例中,opts(legend.position="top")我不知道为什么之后什么都没有。而且我还想将图例拆分为 3 列,例如columns=3in auto.keyof lattice

  2. fill=c("white","grey20","grey70")根据 factor使用灰色系统(例如,)对条形进行着色pl,但似乎我无法更改样式scale_colour_manual

  3. 将 x 轴上的标签转为水平。

  4. 也许是y轴?但是,你觉得有必要吗?

顺便说一句,我不知道如何准备出版图,所以,非常欢迎任何建议!

library(ggplot2)
wt<-gl(3,4,108,labels=c("W30","W60","W90"))
pl<-gl(3,12,108,labels=c("P0","P1","P2"))
gp<-gl(3,36,108,labels=c("A","B","C"))
dat<-cbind(A=runif(108),B=runif(108,min=1,max=10),C=runif(108,min=100,max=200),D=runif(108,min=1000,max=1500))
dat.df<-data.frame(wt,pl,gp,dat)
dat.m<-melt(dat.df)
ggplot(dat.m,aes(x=wt,y=value,group=pl,facet=gp,fill=pl))+
        stat_summary(fun.y=mean,geom="bar",size=2,position="dodge")+
        stat_summary(fun.ymin=function(x)(mean(x)-sd(x)/sqrt(length(x))),geom="errorbar",
                    fun.ymax=function(x)(mean(x)+sd(x)/sqrt(length(x))),position="dodge")+
                    facet_grid(variable~facet,scale="free_y")+ opts(legend.position="top")+ 
                    scale_colour_manual(values = c("red", "blue", "green")) 

我的输出

4

1 回答 1

7

这里有一些提示:

  1. 要获得水平图例,请使用opts(legend.direction="horizontal")

  2. 要更改条的填充,您必须指定scale_fill_manual(values=c("white", "grey20", "grey70")). 在您的示例中,您已将填充正确映射到 pl。唯一缺少的步骤是将手动比例映射为填充,而不是颜色。颜色一般是指条的轮廓,填充是指条的内部。

  3. 要旋转轴文本的角度,请使用opts(axis.text.x = theme_text(angle=45)). 默认方向是水平的,所以我用 45 度来说明。

  4. 我不知道您所说的“可能是 y 轴”是什么意思。也许您不想显示 y 轴,在这种情况下,您可以通过opts(axis.title.y = theme_blank())

请注意,您的示例不可重现,因此我不得不发明一些数据。如果您确保您的示例可重现,您可以让我们更轻松地做出回应:

  • 没有数据year
  • trt在您的 data.frame 中有一个引用
  • 您设置了数据,grp但随后将其称为gp

我的代码:

dat.df <- data.frame(
    gp = gl(3, 36, 108, labels=c("A", "B", "C")),
    yr = sample(2000:2010, 108, replace=TRUE),
    A=runif(108),
    B=runif(108, min=1, max=10),
    C=runif(108, min=100, max=200),
    D=runif(108, min=1000, max=1500)
)
dat.m <- melt(dat.df)

ggplot(dat.m, aes(x=wt, y=value, group=pl, facet=gp, fill=pl))+
    stat_summary(fun.y=mean, geom="bar", size=2, position="dodge")+
    stat_summary(fun.ymin=function(x)(mean(x)-sd(x)/sqrt(length(x))), geom="errorbar", 
        fun.ymax=function(x)(mean(x)+sd(x)/sqrt(length(x))), position="dodge")+#, position="dodge"
    facet_grid(variable~facet, scale="free_y")+
    scale_fill_manual(values=c("white", "grey20", "grey70")) +
    opts(
        legend.position="top", 
        legend.direction="horizontal",
        axis.text.x = theme_text(angle=45),
        axis.title.y = theme_blank()
    ) 

在此处输入图像描述

于 2011-04-26T06:18:44.277 回答