我希望记录转换我的数据但是有一个轴线,其线性值对应于日志刻度.例如,在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中的对数图上的线性刻度).
这与其他两个答案相似,但给你一些不同的东西:
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()
尝试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)
coord_trans 正是这样做的:
ggplot(data, aes(parties, poverty))+
geom_point(size=2)+
coord_trans(x = 'log10')
Run Code Online (Sandbox Code Playgroud)