Ось логарифмических c с измененными отметками - PullRequest
3 голосов
/ 28 мая 2020

Я пытаюсь воссоздать приведенный ниже график, но не могу избавиться от «полушага» для x> 3. Есть ли лучший способ сделать это? Сейчас я использую ggplot2 - чтобы понять это правильно, а затем планирую переключиться на plotly для интерактивных графиков.

Код

Отображаются только 3 трассировки для Po C:

set.seed(69)
library(data.table)
library(ggplot2)

k <- lapply(1:10, function(z){
  ret <- sample(x = (5*z):100, 
                size = 20, 
                replace = T)
  dat <- data.table(V1 =  ret[order(ret)] )
  colnames(dat) <- paste('trace', z, sep = '')
  return(dat)
  })

dat <- do.call(cbind, k)
dat$size <- c(seq(0.1, 1, 0.1), 2:11)

ggplot(dat[size >= 0.2, ], aes(x = size)) + 
  geom_line(size = 1.5, aes(y = trace1), color = '#003366') + 
  geom_line(size = 1.5, aes(y = trace2), 
            color = rgb(red = 0, green = 103, blue = 62, maxColorValue = 255)) + 
  geom_line(size = 1.5, aes(y = trace3), color = '#b20000') + 
  scale_x_log10(breaks = c(seq(0.1, 1, 0.1), 2:11))

Выход

Требуемый график

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Нет необходимости начинать с ggplot2. Вы можете сделать это прямо в plotly:

library(dplyr)
library(tidyr)
library(plotly)

dat %>% 
  filter(size >= 0.2) %>% 
  pivot_longer(-size) %>% 
 plot_ly(x = ~size, y = ~value, color = ~name, type = 'scatter', mode = 'lines') %>% 
  layout(xaxis = list(type = "log",
                      tickvals = as.list(c(seq(0.2,1,0.2), seq(2,10,2)))))

0 голосов
/ 29 мая 2020

Незначительные линии сетки можно удалить с помощью темы, установив panel.grid.minor = element_blank().

set.seed(69)
library(data.table)
library(ggplot2)

k <- lapply(1:10, function(z){
  ret <- sample(x = (5*z):100, 
                size = 20, 
                replace = T)
  dat <- data.table(V1 =  ret[order(ret)] )
  colnames(dat) <- paste('trace', z, sep = '')
  return(dat)
})

dat <- do.call(cbind, k)
dat$size <- c(seq(0.1, 1, 0.1), 2:11)

ggplot(dat[size >= 0.2, ], aes(x = size)) + 
  geom_line(size = 1.5, aes(y = trace1), color = '#003366') + 
  geom_line(size = 1.5, aes(y = trace2), 
            color = rgb(red = 0, green = 103, blue = 62, maxColorValue = 255)) + 
  geom_line(size = 1.5, aes(y = trace3), color = '#b20000') + 
  scale_x_log10(breaks = c(seq(0.1, 1, 0.1), 2:11)) +
  theme(panel.grid.minor = element_blank())

Создано 28 мая 2020 года пакет REPEX (v0.3.0)

...