我需要在R中的几个不同绘图中添加一些文本.该文本的最佳位置将取决于每个特定绘图没有(t多)点的位置,以最小化文本/点重叠.例子:

par(mfrow = c(1, 2))
plot(cars)
text(5, 100, "some text here.", adj = 0, cex = 0.7)
plot(iris[ , 3:4])
text(3, 0.5, "some text here.", adj = 0, cex = 0.7)

enter image description here

有没有一种方法(最好是使用base R)来自动在每个绘图中获得文本的良好位置,而不是我必须先查看每个绘图,然后手动设置5, 1003, 0.5

推荐答案

我不知道有什么内置函数,但编写一个函数来计算最空的象限并不困难.周的 comments .sf提到了"topright"等.这些关键字适用于legend,但似乎在text中不起作用,所以我将使用legend来写文本.首先,功能

emptyQuadrant = function(x) {
    mid1 = sum(range(x[,1]))/2
    mid2 = sum(range(x[,2]))/2
    Q1 = sum(x[,1]>=mid1 & x[,2]>=mid2)
    Q2 = sum(x[,1]<=mid1 & x[,2]>=mid2)
    Q3 = sum(x[,1]<=mid1 & x[,2]<=mid2)
    Q4 = sum(x[,1]>=mid1 & x[,2]<=mid2)
    BestQ = which.min(c(Q1, Q2, Q3, Q4))
    return(c("topright", "topleft", 
        "bottomleft", "bottomright")[BestQ])
}

现在,您可以计算图例的最佳位置.

par(mfrow = c(1, 2))
plot(iris[ , 1:2])
legend(emptyQuadrant(iris[,1:2]), "some text here.", cex = 0.7, bty='n')
plot(iris[ , 3:4])
legend(emptyQuadrant(iris[,3:4]), "some text here.", cex = 0.7, bty='n')

Plots with carefully placed text

R相关问答推荐

使用sensemakr和fixest feols模型(R)

R创建一个数据透视表,计算多个组的百分比

将年度数据插入月度数据

如何从当前行上方找到符合特定条件的最接近值?

在ggplot2中更改小提琴情节的顺序

提取第一个下划线和最后一个下划线之间的任何内容,例外情况除外

为了网络分析目的,将数据框转换为长格式列联表

仅在Facet_WRAP()中的相应方面包含geom_abline()

当我添加美学时,geom_point未对齐

如何将一个方阵分解成没有循环的立方体

手动指定从相同数据创建的叠加图的 colored颜色

如何在R中使用混合GAM模型只对固定的影响因素进行适当的预测?

如何计算每12行的平均数?

使用函数从R中的列中删除标高

在不重复主题的情况下重新排列组

每行不同列上的行求和

条形图中的条形图没有try 赋予它们的 colored颜色

如何使用list_rind在列表中保留已命名但不包含第0行的记录?

图中显示错误 colored颜色 的图例geom_sf

GgHighlight找不到它创建的列:`Highlight..1`->;`Highlight.....`