iso*_*mes 12 plot r data-visualization ggplot2
我看到了一个理想刻度线结构log="y"中的情节本文,图3b 3C 3D.
它有短的,对数间隔的小刻度标记,没有标签,加上带标签的长对数主刻度标记.
有谁知道如何实现这一目标R?
Aar*_*ica 11
在底座R中,只需按照您的需要构建轴.这样的事情可能是一个开始.
set.seed(5)
d <- data.frame(x=1:100, y=rlnorm(100, meanlog=5, sdlog=3))
with(d, {
plot(x, y, log="y", yaxt="n")
y1 <- floor(log10(range(y)))
pow <- seq(y1[1], y1[2]+1)
ticksat <- as.vector(sapply(pow, function(p) (1:10)*10^p))
axis(2, 10^pow)
axis(2, ticksat, labels=NA, tcl=-0.25, lwd=0, lwd.ticks=1)
})
Run Code Online (Sandbox Code Playgroud)
在lattice,latticeExtra包具有以下能力:
library(lattice)
library(latticeExtra)
xyplot(y~x, data=d, scales=list(y=list(log=10)),
yscale.components=yscale.components.log10ticks)
Run Code Online (Sandbox Code Playgroud)
因为ggplot2,似乎您指定刻度的唯一选项是size(即宽度).
# A plot of any old data
dfr <- data.frame(x = 1:100, y = rlnorm(100))
p <- ggplot(dfr, aes(x, y)) +
geom_point() +
scale_y_log10(breaks = breaks, labels = breaks)
#Tick locations
get_breaks <- function(x)
{
lo <- floor(log10(min(x, na.rm = TRUE)))
hi <- ceiling(log10(max(x, na.rm = TRUE)))
as.vector(10 ^ (lo:hi) %o% 1:9)
}
breaks <- get_breaks(dfr$y)
log10_breaks <- log10(breaks)
#Some bigger ticks
p + opts(axis.ticks = theme_segment(
size = ifelse(log10_breaks == floor(log10_breaks), 2, 1)
))
Run Code Online (Sandbox Code Playgroud)