我在对数转换轴上绘制数据,ggplot中的默认值是使用指针标记。但是,我想包括基数e,以便刻度标签显示为“e ^ n”。有谁知道我怎么做到这一点?我可以找到基数10指数的解决方案(例如Pretty axis labels for log scale in ggplot),但不能找到基数e的解决方案。我已经尝试修改基础10解决方案以获得基本e指数,但它对我不起作用。
此示例显示默认行为:
library(ggplot2)
df <- data.frame(x=c(10, 100), y=c(400, 23000))
ggplot(df, aes(x=x, y=log(y)))+geom_line()
我可以使用
以科学格式表示刻度标签ggplot(df, aes(x=x, y=log(y)))+geom_line()+scale_y_continuous(label=scientific)
但我希望这些标签显示为e^n
。谁能指出我在这方面的正确方向?
df <- data.frame(x=c(10, 100), y=c(400, 3000))
刻度以小数形式出现(例如e ^ 6.5)而不是整数(例如e ^ 6,e ^ 7)。我如何强制ggplot只使用整数?我试过了
ggplot(df, aes(x=x, y=y))+geom_line()+
+ scale_y_continuous(trans="log",breaks = trans_breaks("log", function(x) exp(x), by=1),
+ labels = trans_format("log", math_format(e^.x)))
但这没效果。
EDIT2:我可以通过使用以下方式设置中断次数来解决这个问题:
ggplot(df, aes(x=x, y=y))+geom_line()+
scale_y_continuous(trans="log",breaks = trans_breaks("log", function(x) exp(x), n=3),
labels = trans_format("log", math_format(e^.x)))
答案 0 :(得分:2)
要将e^n
作为标签使用scale_y_continuos()
,然后使用库trans_breaks()
中的trans_format()
和scales
来获取所需的标签。另外,要在trans="log"
函数中使用参数scales_...
来获取对数比例(不要在log()
内取aes()
个数据。)
library(scales)
ggplot(df, aes(x=x, y=y))+geom_line()+
scale_y_continuous(trans="log",breaks = trans_breaks("log", function(x) exp(x)),
labels = trans_format("log", math_format(e^.x)))