R:轴刻度标签来自数组的动态上标

标签 r plot ggplot2 superscript

我正在尝试在 R 中为 ggplot2 生成带上标的轴刻度。我想要一个类似这样的情节: Plot from python

但我能做的看起来像这样:Plot using ggplot2 R

注意 y 轴上的轴刻度。 python 有 102、104、106 我想用 R 创建,但是 使用我的代码我无法这样做。

+scale_y_continuous(labels = function(x){return (paste("10^", x,sep = ""))})

我使用此代码在 R 图中创建标签。即 10^2、10^4、10^6 等。 我尝试使用不同论坛上提供的函数表达式及其所有变体:

+scale_y_continuous(labels = function(x){return (expression(10^x))}

但它们都产生相同的输出,即所有刻度上的 10x、10x、10x。表达式函数不理解字符和变量之间的区别。

如何在不手动设置每个刻度值的情况下完成 102、104、106 等刻度。由于我的代码使用值数组生成刻度标签,因此我无法手动执行此操作。我一次生成数百个图,因此我需要通过读取 y 轴值并相应地转换它们来动态地执行此操作。

我不想更改号码的格式。我的数组已经计算出 log(x) 值,我只想在其后面添加 10 并使其成为上标。 使用 Scientific_format 更改格式不是我正在寻找的解决方案,因为我想要一种可以将文本更改为 102 形式的方法。我想添加标签而不应用任何标签数据更改。

最佳答案

我认为 scale_y_continuous(labels = math_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)

enter image description here

关于R:轴刻度标签来自数组的动态上标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38050859/

相关文章:

python - 仅在 x 轴上显示每个 <n> 日期(或按月分组)以减少 x 轴困惑

r - 如何使用 xlim 或 ylim 停止 ggrepel 重叠点

r - ggplot2:如何在分组条形图上添加线条和 p 值?

python - R 中的预测时间分析(数据挖掘算法)

r - 如何在 ggplot2 中分组条形图列上放置标签

r - 在 R 中设置的 shapefile 边界内创建随机多边形

r - 计算向量中的对数

r - 如何在 heatmap.2() 中为原始数据分配色阶

python - 如何以编程方式更新选定的源索引?

r - 如何调整geom tile中的瓦片高度?