我使用ggplot2创建一个点图,然后将相关系数添加到该图表中。接下来,我使用plot来查看每个数据点的信息。但是,图中字体样式有一个错误
我需要R = 0.87和p = 2.2e-16,而不是&;斜体(R)&;或"斜体(P)",同时保持映射部分在stat_cor。我猜,在情节上不能把italic(p)
部分理解为代码。解决方案不应该修复手动添加文本,我需要计算"R"one_answers"P".
代码如下:
p1 <- ggplot(iris) +
geom_point(aes(Sepal.Length, Petal.Length)) +
stat_cor(mapping = aes(Sepal.Length, Petal.Length))
p2 <- ggplotly(p1)
p2
您可以在图表中添加注释-任何类型的R函数和html代码都将作为文本的一部分工作。
仅图解
一个可能的解决方案是直接使用plot,而不是使用ggplot然后转换。
代码应该是:
p2 <- plot_ly(data = iris, x=~Sepal.Length, y = ~Petal.Length) |> #base R pipe operator
add_annotations(
xref = "paper", yref = "paper",
x = 0.1, y = 0.9,
text = paste0("<i>R</i> = ", round(cor(iris$Sepal.Length, iris$Petal.Length),2), "<br>",
"<i>P</i> = ", formatC(cor.test(iris$Sepal.Length, iris$Petal.Length)$p.value,
format="e", digits=2)),
showarrow = F, # Does not show an arrow indicating the text position
align = "left") #align the text left
p2
- "paper"定义x和y如何应用(相对于轴(纸)或特定值)
- x = 0.1, y = 0.9表示文本将放置在x轴的10%和y轴的90%处。
- text是文本本身。我用基本函数计算R和p值,用html符号编辑文本。
使用ggplotly
由于您更喜欢使用ggplotly,因此可以对其使用完全相同的注释。在本例中,代码是:
p1 <- ggplot(iris) + geom_point(aes(Sepal.Length, Petal.Length))
p2 <- ggplotly(p1) |>
add_annotations(
xref = "paper", yref = "paper",
x = 0.01, y = 0.95,
text = paste0("<i>R</i> = ", round(cor(iris$Sepal.Length, iris$Petal.Length),2),
"<br>",
"<i>P</i> = ", formatC(cor.test(iris$Sepal.Length, iris$Petal.Length)$p.value,
format="e", digits=2)),
showarrow = F, # Does not show an arrow indicating the text position
align = "left") #align the text left
p2