2016-05-05 5 views
1

Я пытаюсь сделать график торнадо (график чувствительности a.k.a.) в R. Цель состоит в том, чтобы визуализировать эффект увеличения на 10% и уменьшение на 10% некоторых переменных.Участок торнадо в R

До сих пор я получил этот результат

Tornado plot so far

Это код, я использую:

# Tornado plot 

data <- matrix(c(-0.02,0.02,-0.01,0.01,-0.03,0.02,-0.01,0.04), ncol = 4) 
rownames(data) <- c('+10%','-10%')      # Amount of change in variables 
colnames(data) <- c('V_bar', 'alpha', 'rho','xi')  # Names of variables 
x <- seq(-0.04,0.04, length=10)       # For plotting '%' on x-axis 

barplot(data, horiz = T, las=1, xlim = c(-0.04,0.04), xaxt='n', ylab = '', 
     beside=T, col=c('springgreen','indianred2')) 
axis(1, at=pretty(x), lab=paste0(pretty(x) * 100," %"), las=TRUE) 

У меня есть две конечные цели я хочу достичь:

  1. Получение штрихов для каждой переменной (не juxaposed, как они есть сейчас). Другими словами, зеленая и красная стороны каждой переменной полосы должны встречаться в центре, давая в общей сложности четыре бара.

  2. Вставить математические символы (вместо текста) по оси y. Столбец «V_bar» должен быть V с верхней панелью.

Edit: я разместил отдельный вопрос для математических символов: Barplot: Greek letters on y axis in R

ответ

1

Таким образом, вы можете разделить положительный и отрицательный случай и сюжет накладывая друг на друга с add = TRUE

barplot(data[1,], horiz = T, las=1, xlim = c(-0.04,0.04), xaxt='n', ylab = '', 
     beside=T, col=c('springgreen')) 
barplot(data[2,], horiz = T, las=1, xlim = c(-0.04,0.04), xaxt='n', ylab = '', 
     beside=T, col=c('indianred2'), add = TRUE) 
axis(1, at=pretty(x), lab=paste0(pretty(x) * 100," %"), las=TRUE) 

, поэтому мы берем первую строку (отрицательные значения) для одного графика и вторую строку (положительные значения) для второго графика. Их порядок должен совпадать, и они будут построены бок о бок.

Для того чтобы результаты работы и соответствия были хорошими, они должны иметь одинаковую длину и указываться только один цвет на график.

Adding greek character to axis title

этот другой пост может помочь вам с вашим вторым вопросом

Смежные вопросы