【问题标题】:X-axis log-scale conversion ggplot2X轴对数刻度转换ggplot2
【发布时间】:2019-09-18 19:15:50
【问题描述】:

我使用 RStudio 中的 gapminder 包中的数据在 ggplot2 中创建了一个图表。我很好奇如何将水平轴转换为对数刻度。我确实使用了函数 scale_x_continuous 但在运行代码后图形消失了。

ggplot(data = gapminder07) + geom_point(mapping = aes(x = gdpPercap, y = lifeExp))
p <- ggplot(gapminder07, aes(x = gdpPercap, y=lifeExp, label = country))
p + geom_text()
p + scale_x_continuous(trans = 'log10')

编辑* 添加拟合线时会出现同样的问题。线出现,但数据点消失。

ggplot(data = gapminder07) + geom_point(mapping = aes(x = gdpPercap, y = lifeExp))
p <- ggplot(gapminder07, aes(x = gdpPercap, y=lifeExp, label = country))
p + geom_text()
p + geom_smooth()

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    您使用第一个ggplot() 调用创建了一个ggplot 对象,然后将第二个ggplot 对象存储到变量p 中。在您的下一行中,当您调用 p + geom_text() 时,您将使用第二个 ggplot 对象覆盖第一个 ggplot 对象,并仅使用 geom_text()

    本质上,你调用了这段代码:

    ggplot(data = gapminder07) + geom_point(mapping = aes(x = gdpPercap, y = lifeExp))
    ggplot(gapminder07, aes(x = gdpPercap, y=lifeExp, label = country)) + geom_text()
    ggplot(gapminder07, aes(x = gdpPercap, y=lifeExp, label = country)) + scale_x_continuous(trans = 'log10')
    

    每次调用p + ...,都会覆盖之前的情节。相反,您应该执行类似...

    ggplot(gapminder::gapminder, aes(x = gdpPercap, y = lifeExp, color = country)) + geom_point() + scale_x_continuous(trans = 'log10')
    

    我删除了geom_text() 调用,因为这些国家/地区的名称只是掩盖了整个情节。运行该代码后,我得到了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-27
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      • 2016-11-05
      相关资源
      最近更新 更多