Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在条形图上覆盖条形图-如何对齐列?_R_Graphics - Fatal编程技术网

R 在条形图上覆盖条形图-如何对齐列?

R 在条形图上覆盖条形图-如何对齐列?,r,graphics,R,Graphics,我有一个条形图,我用条形图覆盖了一个散点图 Barplot(data1means) stripchart(data1, add=TRUE, vertical = TRUE) 但是,散点图上的点与条形图上的条形图不对齐,如下所示: 那么我如何改变散点图的间距,使它们匹配呢?据我所知,条形图没有像条形图那样的空间或宽度变量。对于基本图形,可以使用点函数在条形图顶部绘制点。我们从条形图本身获得条形图的x位置。我还介绍了另一种方法,即使用点标记而不是条形图绘制平均值: # Fake data set

我有一个条形图,我用
条形图
覆盖了一个散点图

Barplot(data1means)
stripchart(data1, add=TRUE, vertical = TRUE)
但是,散点图上的点与条形图上的条形图不对齐,如下所示:


那么我如何改变散点图的间距,使它们匹配呢?据我所知,
条形图
没有像
条形图
那样的
空间
宽度
变量。

对于基本图形,可以使用
函数在条形图顶部绘制点。我们从条形图本身获得条形图的x位置。我还介绍了另一种方法,即使用点标记而不是条形图绘制平均值:

# Fake data
set.seed(1)
dat = data.frame(group=LETTERS[1:5], y=rnorm(25,20,2))

# Assign the barplot to x so that x will contain the bar positions.
x = barplot(tapply(dat$y, dat$group, FUN=mean), ylim=c(0,1.05*max(dat$y)), col=hcl(240,100, 70))
points(rep(x, table(dat$group)), dat$y[order(dat$group)], pch=21, bg="red")

plot(rep(1:length(unique(dat$group)), table(dat$group)), 
     dat$y[order(dat$group)], pch=21, bg="blue",
     ylim=c(0,1.05*max(dat$y)), xlim=c(0.5,5.5), xaxt="n")
points(1:length(unique(dat$group)), 
         tapply(dat$y, dat$group, FUN=mean), 
         pch="\U2013", cex=3, col="red")
axis(side=1, at=1:5, labels=LETTERS[1:5])

下面是使用ggplot2的两个相同绘图的版本

library(ggplot2)

ggplot(dat, aes(group, y)) +
  stat_summary(fun.y=mean, geom="bar", fill=hcl(240,100,50)) + 
  geom_point() +
  theme_minimal()

ggplot(dat, aes(group, y)) +
  geom_point() +
  stat_summary(fun.y=mean, geom="point", pch="\U2013", 
               size=8, colour="red") + 
  scale_y_continuous(limits=c(0, max(dat$y))) +
  theme_bw()