R:轴刻度标签从数组中动态上标

R:轴刻度标签从数组中动态上标,r,plot,ggplot2,superscript,R,Plot,Ggplot2,Superscript,我正在尝试为ggplot2生成带有R上标的轴记号。我想要一个类似这样的图: 但我能做的是这样的: 请注意y轴上的轴标记。python有102104106,我想用R创建它们,但是 用我的代码,我无法这样做 +scale_y_continuous(labels = function(x){return (paste("10^", x,sep = ""))}) 我使用这段代码在R图中创建标签。i、 e.10^2、10^4、10^6等。 我尝试使用函数表达式及其在不同论坛上提供的所有变体: +sca

我正在尝试为ggplot2生成带有R上标的轴记号。我想要一个类似这样的图:

但我能做的是这样的:

请注意y轴上的轴标记。python有102104106,我想用R创建它们,但是 用我的代码,我无法这样做

+scale_y_continuous(labels = function(x){return (paste("10^", x,sep = ""))})
我使用这段代码在R图中创建标签。i、 e.10^2、10^4、10^6等。 我尝试使用函数表达式及其在不同论坛上提供的所有变体:

+scale_y_continuous(labels = function(x){return (expression(10^x))}
但是所有这些都产生了相同的输出,在所有的蜱中都是10倍,10倍,10倍。表达式函数不理解字符和变量之间的区别

我如何准确地完成像102、104、106这样的刻度,而不为每个刻度手动设置值。由于我的代码使用一个值数组生成记号标签,所以我无法手动执行此操作。我一次生成数百个绘图,所以我需要通过读取y轴值并相应地转换它们来动态生成


我不想更改号码的格式。我的数组已经计算了log(x)值,我只想在它后面加一个10,使其上标使用scientific_format更改格式不是我想要的解决方案,因为我想要一种可以将文本更改为102格式的方法。我想要添加标签而不对数据进行任何更改。

我认为
缩放y_连续(标签=数学_format(10^.x))
就是您想要的:

library(scales); library(ggplot2)
a <- ggplot(iris, aes(x=Sepal.Length, y=Petal.Length)) + geom_point()   # Left (to compare)
b <- a + scale_y_continuous(labels = math_format(10^.x))   # Middle 
c <- b + annotation_logticks(side="l")                     # Right
   # (Note; "10^.x" is default value, so it is omissible.)
print(a); print(b); print(c)
library(scales);图书馆(GG2)

太棒了!谢谢:)