如何在ggplot2中创建对数刻度


通常,您可能希望将 ggplot2 图的 x 轴或 y 轴的刻度转换为对数刻度。

您可以使用两种方法之一仅使用 ggplot2 来完成此操作:

1.使用scale_y_连续()或scale_x_连续()

 ggplot(df, aes (x=x, y=y)) +
  geom_point() +
  scale_y_continuous(trans=' log10 ') +
  scale_x_continuous(trans=' log10 ')

2. 使用坐标_trans()

 ggplot(df, aes (x=x, y=y)) +
  geom_point() +
  coord_trans(y = ' log10 ' , x=' log10 ')

如果要格式化轴标签以显示指数,可以使用scales包中的函数:

 ggplot(df, aes (x=x, y=y)) +
  geom_point() +
  scale_y_continuous(trans=' log10 ',
                     breaks= trans_breaks (' log10 ', function (x) 10^x),
                     labels= trans_format (' log10 ', math_format (10^.x)))

本教程展示了如何在实践中使用这些函数的示例。

示例 1:使用scale_y_continuous() 的对数刻度

以下代码显示如何使用scale_y_continuous()函数为散点图的y轴创建对数刻度:

 library (ggplot2)

#create data frame
df <- data.frame(x=c(2, 5, 6, 7, 9, 13, 14, 16, 18),
                 y=c(1400, 1700, 2300, 2500, 2800, 2900, 3400, 3900, 11000))

#create scatterplot with log scale on y-axis
ggplot(df, aes (x=x, y=y)) +
  geom_point() +
  scale_y_continuous(trans=' log10 ')

ggplot2 y 轴上的对数刻度

示例 2:使用 coord_trans() 的对数刻度

以下代码演示如何使用coord_trans()函数为散点图的 y 轴创建对数刻度:

 library (ggplot2)

#create data frame
df <- data.frame(x=c(2, 5, 6, 7, 9, 13, 14, 16, 18),
                 y=c(1400, 1700, 2300, 2500, 2800, 2900, 3400, 3900, 11000))

#create scatterplot with log scale on y-axis
ggplot(df, aes (x=x, y=y)) +
  geom_point() +
  coord_trans(y=' log10 ') 

对数刻度 ggplot2

示例 3:自定义对数刻度标签

以下代码演示如何使用scales包中的函数为散点图的y轴创建对数刻度并添加带有指数的自定义标签:

 library (ggplot2)
library (scales)

#create data frame
df <- data.frame(x=c(2, 5, 6, 7, 9, 13, 14, 16, 18),
                 y=c(1400, 1700, 2300, 2500, 2800, 2900, 3400, 3900, 11000))

#create scatterplot with log scale on y-axis and custom labels
ggplot(df, aes (x=x, y=y)) +
  geom_point() +
  scale_y_continuous(trans=' log10 ',
                     breaks= trans_breaks (' log10 ', function (x) 10^x),
                     labels= trans_format (' log10 ', math_format (10^.x))) 

ggplot2 中带有指数的对数刻度

请注意,与前两张图不同,Y 轴标签有指数。

其他资源

ggplot2 标题完整指南
最佳 ggplot2 主题的完整指南
如何在 ggplot2 中创建并排图

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注