X轴对数刻度转换ggplot2

时间:2019-09-18 19:15:50

标签: r ggplot2

我已经使用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()

1 个答案:

答案 0 :(得分:0)

您通过第一次调用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()通话,因为这些国家/地区的名称刚刚覆盖了整个剧情。运行该代码后,我得到了this figure