我正在使用R绘制一张图表,但是在主标题下使用斜体功能非常令人沮丧:
远园珊瑚礁地点不同个体的映射领Territories
任何帮助将不胜感激。
你没有提供有关数据的任何信息,但如果问题是标题中的斜体字,则这段代码可能有所帮助:
plot(rnorm(100), main = substitute(paste(italic('p value'), " = 0.01")))
另请参阅此问题。
个人认为使用 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
返回一个未评估的“调用”,而不是真正的“表达式”。
bquote
至少在普通的 plot
中实现这一点。搜索 [r] bquote title
以获取已经工作的示例。在 lattice 中可能会遇到困难,因此您可能需要将 as.expression
包装在 bquote 的结果周围,因为它返回的值在技术上不是 R 的 'expression'
。 - IRTFM我认为其他用户已经回答了这个问题,但我发现这并不是那么容易的事情,因为像你的例子中那样的长标题会变得棘手。
这里是我能想到的最简洁的代码行,可以结合斜体/正常文本使用通用绘图...让我知道它对你的数据是否有效(或者任何阅读此文并发现它不能与某些图形一起使用的人,请给我私信,我喜欢学习,也宁愿分享而不仅仅将其存储在我的脑海中)
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
? - jenaatop
,只是使用 expression
将斜体下标插入到 ylab
中,它也起作用了 :) - jenaboxplot
函数中:ylab=expression('Log of ('*italic(d[N])*'+0.01) / ('*italic(d[S])*'+0.01)')
。 - jena
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