如何更改下方标题的键,使其处于水平位置而不更改图表的垂直线。
set.seed(000)
m <- matrix(rnorm(100,0,1),100,1)
dt <- data.frame(m)
names(dt) <- c("X")
library(ggplot2)
g2 <- ggplot(dt, aes(x=X))
g2 <- g2+geom_histogram(aes(y=..density..), # Histogram with density instead of count on y-axis
binwidth=.5,
colour="black", fill="white",breaks=seq(-2, 2, by = 0.1))
g2 <- g2+geom_density(alpha=.3, fill="#cccccc") # Overlay with transparent density plot
g2 <- g2+ geom_vline(aes(xintercept=0, linetype="Valor Verdadeiro"),show.legend =TRUE)
g2 <- g2+ geom_vline(aes(xintercept=mean(dt$X, na.rm=T), linetype="Valor Estimado"),show.legend =TRUE)
g2 <- g2+ scale_linetype_manual(values=c("dotdash","solid")) # Overlay with transparent density plot
g2 <- g2+ xlab(expression(paste(gamma[1])))+ylab("Densidade")
g2 <- g2+ theme(legend.key.height = unit(2, "cm") ,
legend.position = c(0.95, 0.95),
legend.justification = c("right", "top"),
legend.box.just = "right",
legend.margin = margin(6, 6, 6, 6),
legend.title=element_blank(),
legend.direction = "vertical",
legend.background = element_rect(fill="gray", size=.5, linetype="dotted"))
g2 <- g2+ guides(linetype = guide_legend(override.aes = list(size = 1)))
g2
注意:我想从dotdash
和solid
格式的标题中旋转该行。
答案 0 :(得分:2)
您可能不得不求助于使用ggplot grob并使用grid
编辑功能。
# Your data and plot
set.seed(000)
m <- matrix(rnorm(100,0,1),100,1)
dt <- data.frame(m)
names(dt) <- c("X")
library(ggplot2)
g2 <- ggplot(dt, aes(x=X))
g2 <- g2+geom_histogram(aes(y=..density..), # Histogram with density instead of count on y-axis
binwidth=.5,
colour="black", fill="white",breaks=seq(-2, 2, by = 0.1))
g2 <- g2+geom_density(alpha=.3, fill="#cccccc") # Overlay with transparent density plot
g2 <- g2+ geom_vline(aes(xintercept=0, linetype="Valor Verdadeiro"),show.legend =TRUE)
g2 <- g2+ geom_vline(aes(xintercept=mean(dt$X, na.rm=T), linetype="Valor Estimado"),show.legend =TRUE)
g2 <- g2+ scale_linetype_manual(values=c("dotdash","solid")) # Overlay with transparent density plot
g2 <- g2+ xlab(expression(paste(gamma[1])))+ylab("Densidade")
g2 <- g2+ theme(legend.key.height = unit(2, "cm") ,
legend.position = c(0.95, 0.95),
legend.justification = c("right", "top"),
legend.box.just = "right",
legend.margin = margin(6, 6, 6, 6),
legend.title=element_blank(),
legend.direction = "vertical",
legend.background = element_rect(fill="gray", size=.5, linetype="dotted"))
g2 <- g2+ guides(linetype = guide_legend(override.aes = list(size = 1)))
# Adjust key height and width
g2 = g2 + theme(
legend.key.height = unit(.6, "cm"),
legend.key.width = unit(1, "cm"))
# Get the ggplot Grob
gt = ggplotGrob(g2)
# grid.ls(grid.force(gt)) # To get a list of editable grobs
# Edit the relevant keys
library(grid)
gt <- editGrob(grid.force(gt), gPath("key-[3,4]-1-[1,2]"),
grep = TRUE, global = TRUE,
x0 = unit(0, "npc"), y0 = unit(0.5, "npc"),
x1 = unit(1, "npc"), y1 = unit(0.5, "npc"))
# Draw it
grid.newpage()
grid.draw(gt)
答案 1 :(得分:0)
正如我发现的out一样,您现在可以将key_glyph
添加到geom_vline
调用中:
library(ggplot2)
g2 <- ggplot(dt, aes(x=X))
g2 <- g2+geom_histogram(aes(y=..density..), # Histogram with density instead of count on y-axis
binwidth=.5,
colour="black", fill="white",breaks=seq(-2, 2, by = 0.1))
g2 <- g2+geom_density(alpha=.3, fill="#cccccc") # Overlay with transparent density plot
g2 <- g2+ geom_vline(aes(xintercept=0, linetype="Valor Verdadeiro"),show.legend =TRUE, key_glyph = "path")
g2 <- g2+ geom_vline(aes(xintercept=mean(dt$X, na.rm=T), linetype="Valor Estimado"),show.legend =TRUE, key_glyph = "path")
g2 <- g2+ scale_linetype_manual(values=c("dotdash","solid")) # Overlay with transparent density plot
g2 <- g2+ xlab(expression(paste(gamma[1])))+ylab("Densidade")
g2 <- g2+ theme(legend.key.height = unit(2, "cm") ,
legend.position = c(0.95, 0.95),
legend.justification = c("right", "top"),
legend.box.just = "right",
legend.margin = margin(6, 6, 6, 6),
legend.title=element_blank(),
legend.direction = "vertical",
legend.background = element_rect(fill="gray", size=.5, linetype="dotted"))
g2 <- g2+ guides(linetype = guide_legend(override.aes = list(size = 1)))
g2