【发布时间】:2014-11-10 06:30:18
【问题描述】:
我觉得这应该很明显......我要做的就是从图表底部删除 x 轴并将其添加到顶部。
这是一个可重现的示例。数据加代码制作如下图:
library(reshape2)
library(ggplot2)
data(mtcars)
dat <- with(mtcars, data.frame(mpg, cyl, disp, hp, wt, gear))
cor.matrix <- round(cor(dat, use = "pairwise.complete.obs", method = "spearman"), digits = 2)
diag(cor.matrix)<-NA
cor.dat <- melt(cor.matrix)
cor.dat <- data.frame(cor.dat)
cor.dat <- cor.dat[complete.cases(cor.dat),]
ggplot(cor.dat, aes(Var2, Var1, fill = value)) +
geom_tile(colour="gray90", size=1.5, stat="identity") +
geom_text(data=cor.dat, aes(Var2, Var1, label = value), color="black", size=rel(4.5)) +
scale_fill_gradient(low = "white", high = "dodgerblue", space = "Lab", na.value = "gray90", guide = "colourbar") +
scale_x_discrete(expand = c(0, 0)) +
scale_y_discrete(expand = c(0, 0)) +
xlab("") +
ylab("") +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_rect(fill=NA,color="gray90", size=0.5, linetype="solid"),
axis.line = element_blank(),
axis.ticks = element_blank(),
panel.background = element_rect(fill="gray90"),
plot.background = element_rect(fill="gray90"),
legend.position = "none",
axis.text = element_text(color="black", size=14) )
但我想要制作的是 - 这似乎应该是显而易见的(例如,在 base-R 中很容易做到),但我还没有设法在 ggplot2 中找到我想要的东西。
【问题讨论】:
-
ggplot 中的轴不如基本 R 中的灵活。对于您的示例,除了标签之外,您没有使用任何轴组件。我想说你最好的选择是根本不绘制轴,只需使用
geom_text将标签放在你想要的位置。 -
移动 x 轴很困难,但可以使用 ggplot_gtable 和 ggplot_build 函数。这些函数“绘制”ggplot,但不是在屏幕上,而是生成所谓的“grob”对象,代表视觉元素(框、线、网格等),但在与 ggplot 对象不同的级别(比例尺、主题、美学等)。您可以根据需要操作 grobs、交换它们、调整它们的大小等。
-
除非您将其自动化,否则您可能只想制作图形然后在事后对其进行编辑。在 illustrator 或 inkscape 中移动轴需要几秒钟。
-
我发现了这个页面,因为我正在开发一个闪亮的应用程序; inkscape 或 Illustrator 是不可能的!