在主要情节标题中使用斜体和普通文本

19

我正在使用R绘制一张图表,但是在主标题下使用斜体功能非常令人沮丧:

远园珊瑚礁地点不同个体的映射领Territories

任何帮助将不胜感激。

3个回答

25

你没有提供有关数据的任何信息,但如果问题是标题中的斜体字,则这段代码可能有所帮助:

plot(rnorm(100), main = substitute(paste(italic('p value'), " = 0.01")))

enter image description here

另请参阅此问题


5
从技术上讲,plot()不是格子绘图函数。此外,plot(rnorm(100),main=expression(italic('p value') == 0.01 ))可以在没有paste()的情况下正常工作,因为您实际上并没有进行替换。尽管原帖需要使用paste来执行plot(rnorm(100),main=expression(paste("Mapped territories of different ", italic("C. austriacus"), " individuals at the Far Gardens coral reef site"))) - MrFlick
@MrFlick。如果您使用正确的plotmath分隔符,则不需要引号。 - IRTFM

19

个人认为使用 paste 构造 plotmath 表达式很“丑陋”;这是一种更清晰地演示 expression“干净”使用的替代方法:

Personally I think using paste to construct plotmath expression is "ugly"; This is an alternative the more clearly demonstrates "clean" use of expression:

 plot(rnorm(100),main=expression( italic(p~value) == 0.01 ))

使用 expression 的另一个原因是,Lattice函数可以接受它,而 substitute 方法则不行:

xyplot(1~1,main=substitute( paste(italic('p value'), " = 0.01" )))
#Error in paste(italic("p value"), " = 0.01") : 
#  could not find function "italic"

如果在替换调用中使用 expression(),它将成功,但在这种情况下它是多余的负担。我曾经向Deepayan Sarkar抱怨过,他回答说substitute返回一个未评估的“调用”,而不是真正的“表达式”。


3
我可以使用表达式并将0.01替换为动态生成的值吗? - Konrad
你可以使用 bquote 至少在普通的 plot 中实现这一点。搜索 [r] bquote title 以获取已经工作的示例。在 lattice 中可能会遇到困难,因此您可能需要将 as.expression 包装在 bquote 的结果周围,因为它返回的值在技术上不是 R 的 'expression' - IRTFM
请使用以下代码中的变量:https://dev59.com/G7Xna4cB1Zd3GeqPOqgp#63507326 - Ferroao

6

我认为其他用户已经回答了这个问题,但我发现这并不是那么容易的事情,因为像你的例子中那样的长标题会变得棘手。

这里是我能想到的最简洁的代码行,可以结合斜体/正常文本使用通用绘图...让我知道它对你的数据是否有效(或者任何阅读此文并发现它不能与某些图形一起使用的人,请给我私信,我喜欢学习,也宁愿分享而不仅仅将其存储在我的脑海中)

plot(1:10, main = expression('Mapped territories of different '*italic(C.~austriacus)*' individuals at the Far Gardens coral reef site'))

现在,如果您想要使用斜体或上/下标文本(除了简单的标签)来进行换行,则可以使用atop函数将超长标签均匀地分开。最后编辑和标签时可能更喜欢使用预览应用程序,但如果您希望一切都在R中完成,可以使用以下示例:

plot(1:10, main = expression(atop('Mapped territories of different '*italic(C.~austriacus),  ' individuals at the Far Gardens coral reef site')))

这将会得到: 带有长标题的绘图

感谢 @42-


很酷的东西。这个atop方法是否也适用于例如ylab - jena
实际上,我尝试过不使用 atop,只是使用 expression 将斜体下标插入到 ylab 中,它也起作用了 :) - jena
酷,它可以处理混合文本吗?(例如在常规文本之间使用斜体文本?)如果您有代码行,请让我看看并尝试自己。 - Dancho Panda
是的,它混合了正常文本和斜体下标。我只是将它放入我的 boxplot 函数中:ylab=expression('Log of ('*italic(d[N])*'+0.01) / ('*italic(d[S])*'+0.01)') - jena
我本来想在这里放一个demonstration,但不知何故,那里的斜体未能正常工作(但您可以下载笔记本,在本地运行)。我在Twitter上向Rnotebook的作者发了推文,请他看看出了什么问题。 - jena

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接