R 是否可以在gpplot2中使用像素而不是轴值来调整数据点和数据标签之间的距离?

R 是否可以在gpplot2中使用像素而不是轴值来调整数据点和数据标签之间的距离?,r,ggplot2,shiny,R,Ggplot2,Shiny,您好,下面我提供了一个散点图,您可以看到它显示了每个数据点的汽车类型。此图是静态的,因此微移x=0.05非常适合。在我的情况下,将更新绘图,以便轴范围可以从0到10到0到10000。在这种情况下,0.05距离似乎没有用处,因为与10000相比,它的值非常小,并且数据标签显示在数据点上。我想知道是否可以将距离设置为像素或其他可以保持数据点和数据标签之间的距离不受轴值影响的值,而不是0.05 p <- ggplot(mtcars, aes(wt, mpg, label = rownam

您好,下面我提供了一个散点图,您可以看到它显示了每个数据点的汽车类型。此图是静态的,因此
微移x=0.05
非常适合。在我的情况下,将更新绘图,以便轴范围可以从0到10到0到10000。在这种情况下,0.05距离似乎没有用处,因为与10000相比,它的值非常小,并且数据标签显示在数据点上。我想知道是否可以将距离设置为像素或其他可以保持数据点和数据标签之间的距离不受轴值影响的值,而不是0.05

    p <- ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars)))
    p + geom_point() + geom_text(hjust = 0, nudge_x = 0.05)

p您可以使用
hjust
而不是
轻推x
。如果
nudge_x
以打印单位工作,
hjust
用于通过调整文本的起始位置来水平调整文本。值0为左对齐,0.5为居中,值1为右对齐:

       Point where text starts:
       |
       |Hjust 0
Hjust 1|
您可以使用任何值。负值将使起始字母向右移动的距离比值0(左对齐)的距离还要远,并且此调整基于文本长度,而不是打印坐标

这有点奇怪,因为更长的字符串将移动更多,但作为一个简单的黑客它的工作相当好。这不会有多大关系,除非你有非常不同的字符串长度。你可以在这个例子中看到一点比较“菲亚特128”和“丰田花冠”

对于相同的
hjust
值,即使
wt
hp
相差大约100倍,也可以看到类似的结果:

p <- ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars)))
p + geom_point() + geom_text(hjust = -.05)

q <- ggplot(mtcars, aes(hp, mpg, label = rownames(mtcars)))
q + geom_point() + geom_text(hjust = -.05)

p您也可以走另一条路,取x轴的范围,乘以一个系数,例如0.05。这样,您的
轻推x
可以调整到您选择的x和y变量使用
hjust
-它将根据文本的长度进行调整。尝试
hjust=-0.05
而不是0.hjust而不是微移_x?由于某些原因,它不适用于我的实际代码,因此我可能会详细编辑一个
问题。我想是这样……有其他选择吗?
p <- ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars)))
p + geom_point() + geom_text(hjust = -.05)

q <- ggplot(mtcars, aes(hp, mpg, label = rownames(mtcars)))
q + geom_point() + geom_text(hjust = -.05)