在试图回答时这个问题 https://stackoverflow.com/questions/34066131/can-data-points-be-labeled-in-stripcharts#34068263,创建所需绘图的一种方法是使用geom_dotplot
from ggplot2
如下:
library(ggplot2)
library(reshape2)
CTscores <- read.csv(text="initials,total,interest,slides,presentation
CU,1.6,1.7,1.5,1.6
DS,1.6,1.7,1.5,1.7
VA,1.7,1.5,1.5,2.1
MB,2.3,2.0,2.1,2.9
HS,1.2,1.3,1.4,1.0
LS,1.8,1.8,1.5,2.0")
CTscores.m = melt(CTscores, id.var="initials")
ggplot(CTscores.m, aes(x=variable, y=value)) +
geom_dotplot(binaxis="y", stackdir="up",binwidth=0.03) +
theme_bw()+coord_flip()
为了区分点,直接添加颜色会很方便,但是geom_dotplot
颜色令人窒息,最终无法堆叠它们:
ggplot(CTscores.m, aes(x=variable, y=value, fill=initials)) +
geom_dotplot(binaxis="y", stackdir="up",binwidth=0.03,color=NA) +
theme_bw()+coord_flip()
不过,可以使用 hack 手动添加颜色:
gg_color_hue <- function(n) {
hues = seq(15, 375, length=n+1)
hcl(h=hues, l=65, c=100)[1:n]
}
cols <- rep(gg_color_hue(6),4)
ggplot(CTscores.m, aes(x=variable, y=value)) +
geom_dotplot(binaxis="y", stackdir="up",binwidth=0.03,fill=cols,color=NA) +
theme_bw()+coord_flip()
不幸的是,没有传说。最重要的是我们不能使用aes(fill=)
尝试手动添加图例,因为它会折叠点。有没有办法在不使用的情况下添加图例aes()
?