小编nac*_*aco的帖子

应用色彩美学后,geom_dotplot()会失去躲闪

我想在X轴上按一个类别组织我的数据,但是按照另一个类别对其进行着色,如下例所示:

图1,没有着色:

require(ggplot2)
nocolor <- ggplot(mtcars, aes(x=as.factor(cyl), y=disp)) + 
  geom_dotplot(binaxis="y", stackdir = "center")
print(nocolor)
Run Code Online (Sandbox Code Playgroud)

图2,带着色:

nododge <- ggplot(mtcars, aes(x=as.factor(cyl), y=disp, fill=as.factor(gear))) + 
  geom_dotplot(binaxis="y", stackdir = "center")
print(nododge)
Run Code Online (Sandbox Code Playgroud)

引入着色后发生的一个问题是属于不同组的点不再相互闪避.这会导致我的真实数据出现问题,因为我得到的点恰好具有相同的值并且完全相互模糊.

然后我尝试了这个,但它使我的数据乱码:

图3:

garbled <- ggplot(mtcars, aes(x=as.factor(cyl), y=disp)) +
  geom_dotplot(binaxis="y", stackdir = "center", fill=as.factor(mtcars$gear))
print(garbled)
Run Code Online (Sandbox Code Playgroud)

点相互躲闪,但着色只是随机的,并不符合实际数据.

我期望这个问题的答案可以解决我的问题,但着色仍然是随机的:

图4:

graphdata <- mtcars
graphdata$colorname <- as.factor(graphdata$gear) 
levels(graphdata$colorname) <- c("red", "blue", "black")
jalapic <- ggplot(graphdata, aes(x=as.factor(cyl), y=disp)) +
  geom_dotplot(binaxis="y", stackdir = "center", fill=as.character(graphdata$colorname))
print(jalapic)
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何让图#2中的点相互躲闪,或者如何修复图3或图4中的着色?我真的很感激任何帮助,谢谢.

r colors fill ggplot2

7
推荐指数
1
解决办法
689
查看次数

如何将 facet_grid() 与 geom_histogram() 一起使用

facet_grid()第一次尝试使用。我用自己的数据绘制了直方图,当我手动计算图形上的框时,分布似乎不准确。我使用mtcars数据复制了我的代码,问题似乎仍然存在。

这是 ggplot 生成的直方图:

dfrm <- mtcars
dfrm$am <- factor(dfrm$am, levels = c(0,1), labels = c("Automatic", "Manual"))
dfrm$vs <- factor(dfrm$vs, levels = c(0,1), labels = c("V-engine", "Straight-Engine"))

require(ggplot2)
ggplot(dfrm, aes(x=dfrm[,"mpg"], fill=dfrm[,"am"], colour=dfrm[,"am"])) +
geom_histogram(colour="transparent", position = "identity", alpha=0.2, bins = 10) +
facet_grid(. ~ dfrm[,"vs"])
Run Code Online (Sandbox Code Playgroud)

当我在直方图上手动计数时,我计算:

  • V 型发动机,自动:14
  • V 型发动机,手动:4
  • 直式发动机,自动:5
  • 直引擎,手动:9

此代码计算实际数据中存在的数量:

require(pastecs)
by(data=dfrm$am, INDICES = dfrm$vs,  table)
Run Code Online (Sandbox Code Playgroud)

结果是:

  • V 型发动机,自动:12
  • V 型发动机,手动:6
  • 直式发动机,自动:7
  • 直式发动机,手动:7

难道我做错了什么?有没有更好的方式来分面,或者这是一个错误?

我还用基本包做了直方图来检查结果是否匹配,当我计算盒子时,这些看起来是准确的。

hist(mtcars[which(mtcars[,"am"]==0 & mtcars[,"vs"]==0),"mpg"], xlim=c(10, 35), col=rgb(0.1,0.1,0.1,0.5), breaks=10)
hist(mtcars[which(mtcars[,"am"]==1 …
Run Code Online (Sandbox Code Playgroud)

r histogram facet ggplot2

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

ggplot2 ×2

r ×2

colors ×1

facet ×1

fill ×1

histogram ×1