ggplot:带有线性标签的对数刻度

la_*_*che 2 r ggplot2

我希望记录转换我的数据但是有一个轴线,其线性值对应于日志刻度.例如,在Iversen和Soskice 2002的以下PDF的第3页中.数据已被转换,但标签在其相应的线性值中是为了便于阅读.

http://faculty.washington.edu/cadolph/vis/vishw1.pdf

这是一些可重现的数据和我的情节开始:

set.seed(51)
data<-data.frame(country=letters[1:14], 
                 poverty=runif(14,min=1,max=100),
                 parties=runif(14,min=1,max=10))

ggplot(data, aes(parties, poverty))+
  geom_point(size=2)+
  scale_x_log10()
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我已经看到了其他类似的问题,但没有一个有工作答案(例如R's GGplot中的对数图上的线性刻度).

tbr*_*ley 6

这与其他两个答案相似,但给你一些不同的东西:

ggplot(data, aes(parties, poverty))+
  geom_point(size=2)+
  scale_x_log10(breaks = scales::log_breaks(n = 10)) +
  annotation_logticks(sides = "b")
Run Code Online (Sandbox Code Playgroud)

如果你想在 x 和 y 轴上都使用它,那么你需要添加:

 scale_y_log10(breaks = scales::log_breaks(n = 10))
Run Code Online (Sandbox Code Playgroud)

并在函数中更改sides = "b"为。sides = "bl"annotation_logticks()


GL_*_*_Li 5

尝试trans内部scale_x_contineous,仅转换轴.

ggplot(data, aes(parties, poverty))+
    geom_point(size=2)+
    scale_x_continuous(
        trans = "log10",
        breaks = 1:10
    )
Run Code Online (Sandbox Code Playgroud)


Axe*_*man 5

coord_trans 正是这样做的:

ggplot(data, aes(parties, poverty))+
  geom_point(size=2)+
  coord_trans(x = 'log10')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明