如何在ggplot xlab中更改行间距?

时间:2015-03-02 13:01:24

标签: r ggplot2 axis-labels

我的X轴标签太长,所以我用xlab(expression(atop(paste("Hello world"^"TM ", ":Hi"),paste("hello again"^"TM",": Hi"))))将它分成两行。行间距太大,我应用方法axis.title.x=element_text(lineheight=0.2)来改变行间距,但它没有改变任何东西。该方法改编自here。我的问题是如何更改xlab的行间距。提前谢谢!

2 个答案:

答案 0 :(得分:1)

要完美地居中所有(\n不会这样做),保持每段文字的大小不同,无论行数是多少,同时能够调整行间距,请改用:< / p>

xlab(expression(atop(textstyle("whateverline1"),atop(textstyle("whateverline2"),atop(scriptscriptstyle(""),textstyle("whateverline3"))))))

然后使用labeller=label_parsed 这也适用于facet_gridtitleylab

注意atoptextstyle定位文本,同时保持文本大小相同,scriptscriptstyle("")控制文本行之间的间距。您还可以根据自己的需要使用scriptstylescriptscriptstyle使用不同的相对大小的文字,当然也可以在主题部分使用axis.title.x=element_text(size=whatevernumber)

答案 1 :(得分:1)

1-具有两个Endpoint=sb://abc.servicebus.windows.net/;SharedAccessKeyName=allow;SharedAccessKey=abcd=;EntityPath=abc 调用的解决方案

here所述,每次我们调用val customEventhubParameters = EventHubsConf(connStr).setMaxEventsPerTrigger(maxEventTrigger) val incomingStream = spark.readStream.format("eventhubs").options(customEventhubParameters.toMap).load(); logger.info("Data has been fetched from event hub successfully"); val messages = incomingStream.withColumn("Offset", $"offset".cast(LongType)).withColumn("Time (readable)", $"enqueuedTime".cast(TimestampType)).withColumn("Timestamp", $"enqueuedTime".cast(LongType)).withColumn("Body", $"body".cast(StringType)).select("Offset", "Time (readable)", "Timestamp", "Body") implicit val formats = DefaultFormats; val ob = new EventhubMaster(); 时,文本都会变小,但行之间的间距也会变小。 因此,对于您的两行示例,我们可以调用两次atop,这将强制3行,但是我们将第一行设置为空,以便下一个atop()将文本绘制得更小,并且之间的间距也较小线。然后,我们调整atop()中标题的文本大小和边距:

在这里说明了问题-应该缩小两行之间的距离。

atop

建议的解决方案,其中包含两个theme调用:

library(ggplot2)

p <- ggplot(mtcars, aes(mpg, disp)) + geom_point()
# Your usual atop call
label_1 <- expression(atop(x = paste("Hello world"^"TM ", ": Hi"),
                           y = paste("hello again"^"TM ", ": Hi")))
p + xlab(label_1)


2-使用atop

的解决方案

另一种方法是两次致电 # Trick with two atop calls label_2 <- expression(atop(x = "", # Empty first line might do the trick y = atop(x = paste("Hello world"^"TM ", ": Hi"), y = paste("hello again"^"TM ", ": Hi")))) # Since the second atop forces smaller text (and also smaller gap between # lines), then we need to increase the text manually with axis.title.x in # theme(). Also adjust the top margin of the title since the first line is # empty but still takes space. p + xlab(label_2) + theme(axis.title.x = element_text(size = 15, margin = margin(t = -2, r = 0, b = 0, l = 0, unit = "mm"))) (在this讨论中建议)。再次,我们需要微调自定义两行轴标题的位置和空间。

我对这种方法以及ggplot2 two-line label with expression中的cowplot::draw_label进行了更多说明。

cowplot::draw_label

reprex package(v0.2.1)于2019-01-14创建