R中的龙卷风图

3
我正在尝试在R中制作龙卷风图(又称敏感度图)。目标是可视化某些变量增加10%和减少10%的效果。
到目前为止,我已经得到了以下结果:
这是我正在使用的代码:
# 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. 使每个变量的柱子对齐(而不是像现在这样排在一起)。换句话说,每个变量柱状图的绿色和红色部分应该在中心处相遇,共计四个柱子。

  2. 在y轴上粘贴数学符号(而不是文本)。“V_bar”列应该是一个带有上横线的V。

编辑:我已经发布了一个关于数学字符的单独问题:Barplot: Greek letters on y axis in R
1个回答

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)

因此,我们将第一行(负值)用于一个图,第二行(正值)用于另一个图。它们的顺序必须匹配并且将被并排绘制。

为了使其有效并且结果美观,两个图必须具有相同的长度,并且每个图仅指定一种颜色。

如何将希腊字母添加到轴标题中

这篇文章可能会帮助您解决第二个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接