ggplot斜体标题的一部分并将文本分成两行

时间:2017-11-08 18:17:09

标签: r ggplot2 paste

我想在我的图表中添加以下标题:

  

注意:美国,美国的市场集中度平均值   王国和荷兰分别是1920年,1388年和1244年

其中'注意:'需要用斜体字表示,荷兰分别是1920,1388和1244'应放在新的一行。

使用paste功能,我可以确定一个部分。但是使用\n中的paste,可以将所有内容混合起来,如此处所示(这是一张已编辑过的图片,使用下面的保罗建议):< / p>

enter image description here

我尝试了其他各种解决方案,但没有成功。这是我正在使用的代码:

library(ggplot2)

note = expression(paste(italic("Note: "), "Market concentration averages in the United States, United Kingdom, and the \nNetherlands are, respectively, 1920, 1388, and 1244"))

gg <- ggplot(mtcars, aes(wt, mpg)) + geom_point()+

# Title
labs(caption=note)

gg + theme(plot.caption=element_text(size=7.5, hjust=0, margin=margin(t=15)))

3 个答案:

答案 0 :(得分:2)

这会给你你想要的吗?

note = expression(paste(italic("Note: \n "), 
                        "Market concentration averages in the United States, United Kingdom, and the \nNetherlands are, respectively, 1920, 1388, and 1244"))

(不同之处在于“Note”部分现在还包括换行符)

答案 1 :(得分:1)

这是一种不同的方法:只需在ggplot2图中创建空格(通过添加空白标题),然后导航到ggplot2为标题创建的视口,并将标题绘制为单独的文本行。

library(grid)

ggplot(mtcars, aes(wt, mpg)) + geom_point() + 
       labs(caption=expression(atop(" ", " ")))

grid.force()
downViewport("caption.9-4-9-4")
## grid.rect()
grid.text(expression(paste(italic("Note: "), 
                           "Market concentration averages in the United States, United Kingdom, and the")),
          x=0, y=unit(1, "npc") - unit(1, "line"), just=c("left", "top"),
          gp=gpar(fontsize=7.5))
grid.text("Netherlands are, respectively, 1920, 1388, and 1244",
          x=0, y=unit(1, "npc") - unit(2, "line"), just=c("left", "top"),
          gp=gpar(fontsize=7.5))

希望有所帮助

答案 2 :(得分:1)

基于this answer

var myArrays =[[1, 4, 7],[2, 5, 8],[3, 6, 9]];
var _newArray = [];

for(var i=0; i<myArrays.length ;i++){
     _newArray[i] = [];
   for(var j=0; j<myArrays.length ;j++){
     _newArray[i].push(myArrays[j][i]);
  }
}

$scope.myArrays = _newArray

enter image description here

library(grid)
library(ggplot2)


ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
  geom_line() + 
  labs(caption= "First~line \n italic('and a second,')~bold('fancy one') \n
       'also,'~integral(f(x)*dx, a, b)~'for good measure'")+
  (theme_grey() %+replace% theme(plot.caption = element_custom()))