Объединение двух участков рядом - PullRequest
2 голосов
/ 03 апреля 2020

Мне нужно поставить два сюжета рядом. Таким образом, это не сложное упражнение, за исключением того, что:

  1. Я хочу и должен использовать базовую c графику
  2. . Графики должны быть расположены рядом друг с другом.

Вот пример, как я ее решаю

x2 <- seq(1.9, 7.3, length.out=10)
x1 <- seq(0.2, 5.8, length.out=10)
y1 <- rnorm(10)
par(mfrow=c(1,2))
par(mar=c(5,4,4,0))
plot(x1, y1, type="l", bty="n", xlim=range(x1), ylim=c(-2, 2))
par(mar=c(5,0,4,2))
plot(x2, y1, type="l", bty="n", xlim=rev(range(x2)), ylim=c(-2, 2), yaxt="n")

enter image description here

Вот проблема: я хотел бы две строки коснуться или почти коснуться. Если оси разделены, это нормально; но расстояние между этими двумя участками должно быть минимальным. Оптимально, я хочу иметь жирную красную вертикальную линию, показывающую, где встречаются две части графика.

Ни один из ответов, которые я нашел до сих пор, не позволяет мне сделать это.

Контекст: Я планирую перестановку генома c, в которой две отдаленные части некоторых хромосом были слиты вместе, одна из них перевернута (отсюда и разное масштабирование).

Ответы [ 2 ]

2 голосов
/ 03 апреля 2020

Хотя ответ @ DarrenTsai является абсолютно правильным, вы обнаружите, что шкалы оси X принимают разные значения на пиксель, когда они имеют разные параметры mar. Я предлагаю вам рассмотреть возможность их построения вместе, а затем добавить пользовательскую ось.

x2 <- seq(1.9, 7.3, length.out=10)
x1 <- seq(0.2, 5.8, length.out=10)
y1 <- rnorm(10)
ValueTable <- data.frame(Foward = c(x1,max(x1) + (x2-min(x2))), Join = c(x1,rev(x2)))
plot(ValueTable$Foward,c(y1,rev(y1)),type = "l",xaxt="n",xlab = "",ylab = "Value")
axis(1, ValueTable$Foward[seq(1,nrow(ValueTable),by = 2)], labels=formatC(ValueTable$Join[seq(1,nrow(ValueTable),by = 2)],format = "f", digits = 2))
abline(v=max(x1))

enter image description here

2 голосов
/ 03 апреля 2020

Добавьте xaxs = "i" в кулак par(), то есть

par(mfrow = c(1, 2), xaxs = "i")

и снова выполните весь код.

xaxs указывает стиль расчета интервала оси, который будет использоваться для оси х. По умолчанию "r" (обычный), что расширяет диапазон данных на 4 процента на каждом конце. Если изменить его на "i", то ось X будет соответствовать исходному диапазону данных.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...