У меня есть три набора данных, которые я хочу построить, используя Circlize. Установки «a» и «b» содержат положительные и отрицательные значения, а «c» содержит только положительные значения. Я хочу построить с использованием согласованной оси y для «a» и «b» и другой для «c». К сожалению, я не могу найти способ сделать это.Как вы определяете отдельные наборы ограничений оси y для каждого сектора оцифрованного участка?
Код, который я использую ниже, я, по-видимому, могу иметь единственную ось y для каждой или фиксированной оси y для всех (если вы раскомментируете «ylim ...» в коде).
Я пробовал несколько вещей, пытаясь выполнить петлю, используя функцию circos.lines()
, но это не решило ее.
circos.info()
показывает отдельные границы оси y, поэтому я считаю, что это должно быть возможно.
Заранее спасибо.
library("circlize")
library("reshape")
#--- Data ---#
a <- sort(rnorm(100,0,10))
b <- sort(rnorm(100,0,5))
c <- abs(rnorm(100,0,200))
data <- cbind("a" = a, "b" = b, "c" = c)
data_melt <- melt(data)
#--- Plotting ---#
circos.initialize( factors = data_melt$X2,
x = data_melt$X1,
sector.width = 1
)
circos.trackPlotRegion(factors = data_melt$X2,
y = data_melt$value,
# ylim = range(data_melt$value),
force.ylim = FALSE,
panel.fun = function(x, y) { circos.axis() }
)
circos.trackLines( data_melt$X2,
data_melt$X1,
data_melt$value,
type = "h",
col = "grey",
lwd = 3,
baseline = 0)`
circos.info(sector.index = NULL, track.index = 1)
Привет Zuguang, спасибо за ваш ответ. Вы знаете, как это обобщать, когда «a», «b» и «c» содержат различное количество наблюдений? Я столкнулся с ошибкой: «Ошибка в circos.lines (x, y, type =« h », col =« gray », lwd = 3, baseline = 0): Длина x и y отличается.». Я попытался изменить using sector.index, но не смог его обобщить. – Dominic
Число наблюдений в каждой категории не должно влиять на график. Можете ли вы проверить, имеют ли 'data_melt $ X1' и' data_melt $ value' одинаковые длины? Или вы можете проверить другую часть своего кода? Он отлично работает с неравным количеством наблюдений на моей стороне. –
Извинения, я неправильно задал код в коде, который я пишу. Он работает сейчас. Еще раз спасибо и спасибо за пакет. – Dominic