7

我正在使用 ggplot2 生成散点图。我把标题变成了一个变量,我怎样才能改变字体大小?代码如下:

library("ggplot2")
plotfunc <- function(x){
    x +
    geom_point() +
    geom_smooth(se = FALSE, method = "lm",  color = "blue", size = 1) +
    opts(title = plottitle,
           axis.title.x = theme_text(size = 8, colour = 'black'),
         axis.title.y = theme_text(size = 8, colour = 'black', angle = 90))
}

plottitle <- "This is Title"
p <- ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width))
plotfunc(p)

我试过了

opts(title = plottitle (size = 10),...

但有一个错误:

Error in opts(title = plottitle(size = 10),
axis.title.x = theme_text(size = 8,  : could not find function "plottitle"

它被认为不是我想要的功能。我应该怎么办?谢谢。

4

3 回答 3

8

如果opts()仍然适用于您,那么您使用的是旧版本的 ggplot2。较新的命令是theme()。在任何情况下,您都不想将实际的标题标签放入opts主题中——使用labs()

plotfunc <- function(x) {
  x +
    geom_point() +
    geom_smooth(se = FALSE, method = "lm",  color = "blue", size = 1) +
    theme_bw() +
    theme(axis.title.x = element_text(size = 8, colour = 'black'),
          axis.title.y = element_text(size = 8, colour = 'black', angle = 90)) +
    labs(title='this', x='that', y='the other')
}

## plottitle <- "This is Title"
p <- ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width))
plotfunc(p)

在此处输入图像描述

于 2012-11-27T18:17:17.297 回答
6

可笑的迟到的答案,但我认为现有的答案并没有解决实际问题:

我把标题变成了一个变量,我怎样才能改变字体大小?

这对我有用,并且是更新的ggplot语法(theme()vs. opts()):

library(ggplot2)
plotfunc <- function(x){
    x +
    geom_point() +
    geom_smooth(se = FALSE, method = "lm",  color = "blue", size = 1) +
    labs(title = plottitle) +
    ### pay attention to the ordering of theme_bw() vs. theme()
    theme_bw() +
    theme(plot.title = element_text(size = 20),
          axis.title.x = element_text(size = 12),
          axis.title.y = element_text(size = 8))

}

plottitle <- "This is Title"
p <- ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width))
plotfunc(p)

我得到以下信息:

ggplot 主题(plot.title)

关于我的theme_bw()评论的注释:尝试运行上面的内容,但theme_bw()最后放在theme(plot.title, ...)位之后,就像上面斯蒂芬亨德森的回答一样。您会注意到没有任何字体大小生效。这是因为这是一个预设,如果您在添加后传递它theme_bw(),它将覆盖各种自定义选项。theme()

只是一件需要注意的小事;我只是因为使用theme_bw()了很多东西才学会了它,而且我的头撞在墙上试图弄清楚为什么其他theme()选项不起作用,然后才意识到这ggplot毕竟不是我的语法,而是我的设置顺序。一定要喜欢编码:)

此外,这里是您可以传递的选项的完整列表,theme()作为您可以调整的内容和方式的参考。

于 2015-04-22T18:56:08.210 回答
1

你把一个“(”作为下一个非空白字符,plottitle所以解释器决定它必须是一个函数。试试

  .... opts( title=plottile, size=10)

这是一长串变暖信息:

Warning messages:
1: 'opts' is deprecated.
Use 'theme' instead.
See help("Deprecated") 
2: 'theme_text' is deprecated.
Use 'element_text' instead.
See help("Deprecated") 
3: 'theme_text' is deprecated.
Use 'element_text' instead.
See help("Deprecated") 
4: In opts(title = plottitle, axis.title.x = theme_text(size = 8, colour = "black"),  :
  Setting the plot title with opts(title="...") is deprecated. Use labs(title="...") or ggtitle("...") instead.
于 2012-11-27T17:43:44.660 回答