r - 如何在ggplot2中斜体相关系数注释的一部分
问题描述
我无法弄清楚annotate()
下面函数中的字母“R”是如何在我的图中斜体显示的。我之前尝试过添加,expression()
然后paste()
使用italic()
,但是然后将“round(cor ...”开头的部分粘贴为文本,而不是计算的结果。
ggplot(subset(crossnat, !is.na(homicide) & !is.na(gdppercapita)),
aes(x = gdppercapita, y = homicide)) +
geom_point(alpha = 0.4) +
ggtitle("Figure 3: Relationship between GDP per capita ($) and homicide rate") +
labs(subtitle = "n = 177 (17 countries removed as either GDP per capita or homicide data unavailable",
x = "GDP per capita ($)",
y = "Number of homicides in 2013 (per 100k of population)") +
scale_y_continuous(breaks = c(0,15,30,45,60,75,90)) +
geom_smooth(method = "loess",
formula = y ~ x,
colour = "red",
size = 0.5) +
annotate(x = 50000, y = 75,
label = paste("R = ", round(cor(crossnat$gdppercapita, crossnat$homicide, use = "complete.obs"),3)),
geom = "text", size = 4)
谢谢
编辑 - 建议的可能重复项似乎对我不起作用。我认为这可能是由于计算嵌入在annotate()
?
解决方案
这种格式很棘手。使用时需要注意空格 parse=TRUE
。要格式化文本,您需要进行两个粘贴步骤。让我们创建一个简单的可重现示例:
ggData <- data.frame(x=rnorm(100), y=rnorm(100) )
ggplot
为了代码的可读性,我建议您将文本和相关值 R 存储在函数之外:
textPart1 <- "paste(italic(R), \" =\")" # check the ?annotate example for \" =\"
corVal <- round(cor(ggData$x, ggData$y, use = "complete.obs"), 3)
诀窍是用空格代替paste
两个变量。sep="~"
ggplot(ggData, aes(x = x, y = y) ) +
geom_point(alpha = 0.4) +
annotate("text", x = 2, y = 1.5,
label = paste(textPart1, corVal, sep="~"), size = 4 , parse=TRUE)
推荐阅读
- amazon-web-services - 我当前事务的 AWS Redshift 事务内存限制如下所述。我是否需要为了交易而创建一个额外的节点?
- python - 如何根据特定的订购条件过滤笛卡尔积的元素
- google-plus - 我正在尝试使用密钥“location.address.formatted”访问用户位置,
- javascript - 我怎样才能真正理解'Array.prototype.join'的方法
- php - php登录脚本不起作用,它不会重定向回仪表板
- postgresql - 在特定时间间隔内将更改的数据从一个数据库单独复制/同步到另一个数据库,Postgresql
- c# - 在新窗口中预览生成的 pdf 而不是下载它
- swift - 枚举与 RawRepresentable 的一致性
- android - SMS Retriever Api 的播放服务版本问题
- ios - 在 xcode 版本 10.2 中为产品类型“应用程序”签署二进制文件时,空标识无效