R:用ggplot2软件包或条形图功能以给定角度写入图例和标签的框

R:用ggplot2软件包或条形图功能以给定角度写入图例和标签的框,r,plot,ggplot2,histogram,legend,R,Plot,Ggplot2,Histogram,Legend,我的问题当然是重复,但我不知道如何实现我的目标 以下是我的数据: v1=c(46.55172, 13.79310, 29.31034, 1.72414, 5.17241, 3.44828, 0.00000, 0.60241, 24.09639, 59.63855, 4.81928, 6.02410, 0.00000, 4.81928, 14.58333, 22.91667, 58.33333, 0.00000, 2.08333, 2.08333, 0.00000, 20.

我的问题当然是重复,但我不知道如何实现我的目标

以下是我的数据:

v1=c(46.55172, 13.79310, 29.31034,  1.72414,  5.17241,  3.44828,  0.00000,  0.60241, 24.09639, 59.63855,  4.81928,  6.02410,  0.00000,  4.81928, 14.58333, 22.91667, 58.33333, 0.00000,  2.08333,  2.08333,  0.00000, 20.96774, 20.96774, 47.58065,  5.64516,  3.22581,  0.80645,  0.80645)

names(v1) = c('Simul','SE','Obs','CG','Double','LR','RM','Simul','SE','Obs','CG','Double','LR','RM','Simul','SE','Obs', 'CG','Double','LR','RM','Simul','SE','Obs','CG', 'Double','LR','RM')
前7个数字对应第一个“日记账”,8到14个数字对应第二个“日记账”,等等

每个日记账的七个编号的名称为Simul、SE、Obs、CG、Double、LR、RM。我希望这些数字分别代表条形图中七个条形的高度,我希望四个轴颈位于同一窗口上。我当前的脚本就是这样做的

par(mfrow=c(2,2))
for (journal in 0:3){
    if (journal == 0) { journal.name = 'American Naturalist'}
    if (journal == 1) { journal.name = 'Animal Behavour'}
    if (journal == 2) { journal.name = 'Ecology Letters'}
    if (journal == 3) { journal.name = 'Evolution'} 
    barplot(v1[((journal*7)+1):((journal*7)+7)],ylim=c(0,60),main=journal.name)
}
mtext('Frequency',padj=2,side=2,outer=T)
mtext('Articles Type',padj=-2,side=1,outer=T)

我现在想

1) 图例

。。。在右侧添加一个方框(以及该方框的空格),以便添加一些具有删节含义的图例(模拟、SE、OBS等)

2) 文本角度

。。。以45°的角度书写节略(模拟、SE、OBS等)

我想实现这些的最好方法是使用ggplot,但是任何答案类型都是受欢迎的


非常感谢

对于初学者,我建议重新调整当前数据(
v1
)以适应
ggplot2

df = do.call("rbind",lapply(unique(names(v1)),function(x){v1[names(v1)==x]}))
rownames(df) = unique(names(v1))
colnames(df) = c("American Naturalist","Animal Behavour","Ecology Letters","Evolution")

head(df)
       American Naturalist Animal Behavour Ecology Letters Evolution
Simul             46.55172         0.60241        14.58333  20.96774
SE                13.79310        24.09639        22.91667  20.96774
Obs               29.31034        59.63855        58.33333  47.58065
CG                 1.72414         4.81928         0.00000   5.64516
Double             5.17241         6.02410         2.08333   3.22581
LR                 3.44828         0.00000         2.08333   0.80645
现在,使用
重塑2

head(melt(df))
    Var1                Var2    value
1  Simul American Naturalist 46.55172
2     SE American Naturalist 13.79310
3    Obs American Naturalist 29.31034
4     CG American Naturalist  1.72414
5 Double American Naturalist  5.17241
6     LR American Naturalist  3.44828
接下来是基本的
ggplot2
条形图:

p = ggplot(melt(df)) + geom_bar(aes(x=Var1,y=value, fill=Var1), stat="identity") + facet_wrap(~Var2)
轴标签的角度:

p <- p + theme(axis.text.x = element_text(angle = 45))

好的,首先,让我们将数据放入矩阵中。在一个向量中跟踪太难了

v2 <- matrix(v1, nrow=7)
rownames(v2) <-  c('Simul','SE','Obs','CG','Double','LR','RM')
colnames(v2) <- c('American Naturalist','Animal Behavour','Ecology Letters','Evolution')
v2
#        American Naturalist Animal Behavour Ecology Letters Evolution
# Simul             46.55172         0.60241        14.58333  20.96774
# SE                13.79310        24.09639        22.91667  20.96774
# Obs               29.31034        59.63855        58.33333  47.58065
# CG                 1.72414         4.81928         0.00000   5.64516
# Double             5.17241         6.02410         2.08333   3.22581
# LR                 3.44828         0.00000         2.08333   0.80645
# RM                 0.00000         4.81928         0.00000   0.80645


请注意,我已经将这些条设置为水平,这样每个条的标签都可以很容易地读取。这比把它们放在一个角度,给你的观众带来痛苦要好。这也使得我们可以使用这些东西的全名,而不仅仅是缩写,而不是将其放在一个图例中,让你的观众感到头晕目眩。

关于文本角度,如果你使用基本图形,您必须在调用
barplot
时抑制标签,然后使用
text
手动绘制标签,为
srt
选项提供所需的角度。请参见
?par
中的
srt
条目谢谢,这是一个很好的答案。你知道如何避免在垂直0下方显示条形图吗?因为当前显示模糊了一点效果。
v2 <- matrix(v1, nrow=7)
rownames(v2) <-  c('Simul','SE','Obs','CG','Double','LR','RM')
colnames(v2) <- c('American Naturalist','Animal Behavour','Ecology Letters','Evolution')
v2
#        American Naturalist Animal Behavour Ecology Letters Evolution
# Simul             46.55172         0.60241        14.58333  20.96774
# SE                13.79310        24.09639        22.91667  20.96774
# Obs               29.31034        59.63855        58.33333  47.58065
# CG                 1.72414         4.81928         0.00000   5.64516
# Double             5.17241         6.02410         2.08333   3.22581
# LR                 3.44828         0.00000         2.08333   0.80645
# RM                 0.00000         4.81928         0.00000   0.80645
library(lattice)
library(reshape2)
v3 <- melt(v2)
names(v3) <- c("Variable", "Journal", "Frequency")
barchart(Variable~Frequency|Journal, data=v3, as.table=TRUE)