首页 > 解决方案 > 使用 ggplot2 在对数轴上绘制真正的线性关系

问题描述

有没有办法绘制线性关系(或几个线性关系)的线,其中一个轴具有对数刻度,并且线显示真正的线性关系(即实际图上不是直线),如以下?

excel样机

以下代码将绘图上显示的内容绘制为一条直线,但由于 y 轴是对数刻度,因此它不会绘制真正的线性关系。

ggplot(df.m, aes(x, value, colour = variable)) +
  geom_point(alpha = .5, shape = 20) +
  xlab('Index of Multiple Deprivation (2015)') +
  ylab('Average network distance to nearest 2ha+ greenspace (m)') +
  scale_y_log10() +
  geom_smooth(method=lm, se = FALSE)

它产生以下情节:

ggplot 版本

编辑:可重现的例子

ggplot(diamonds[1:5000, ],  aes(x = carat, y = price, colour = cut)) +
  geom_point(alpha = .5, shape = 20) +
  xlim(0.5, 1.5) +
  scale_y_log10(breaks = c(2500, 3000, 3500, 4000), limits = c(2500, 4000)) +
  geom_smooth(method=lm, se = FALSE)

产生以下情节:

可复制钻石示例

如您所见,尽管 y 轴具有对数刻度,但线条实际上仍然直线。

标签: rggplot2

解决方案


推荐阅读