Точечный график R с маленькими линиями в качестве маркеров - как получить тонкие, но широкие линии?

Я хотел бы изобразить несколько последовательностей чисел как точечный график, но с маркерами, которые будут линиями, а не точками. Один из способов - использовать pch='-':

       ## example 10 sequences, each with 15 values
data <- t(sapply(1:15, function(x){rnorm(n=10, mean=x)}))

matplot(x=1:15, y=data, type='p', pch='-', cex=1, col='black')

Результат:

нормально, только хотелось бы, чтобы линии были шире. Используя строку дефисов, pch='----', не дает более широких линий.

Я могу исправить их ширину другой cex:

       matplot(x=1:15, y=data, type='p', pch='-', cex=5, col='black')

и результат:

имеет желаемую ширину, но теперь линии слишком толстые.

Интересно, есть ли способ отдельно выбрать увеличение маркеров в направлениях x и y или получить желаемый результат другим способом.

Редактировать:

Одно из возможных решений - разместить несколько копий одних и тех же данных рядом с небольшими приращениями по оси x:

       matplot(x=1:15, y=data, type='p', pch='-', cex=1, col='black')
for(dx in seq(-0.3, 0.3, by=0.1)){
    matpoints(x=(1:15)+dx, y=data, type='p', pch='-', cex=1, col='black')
}

Результат более-менее такой, как хотелось бы:

но мне интересно, есть ли более элегантное решение.

1 ответ

Две быстрые мысли.

  1. Найдите шрифт с действительно длинным "тире" или "подчеркиванием" и используйте его.

  2. Это будет медленным, но замените каждую упорядоченную пару {x,y} в вашем наборе данных двумя точками {xk,y},{x+k,y} и нанесите линии между каждой парой отдельно.

Другие вопросы по тегам