【问题标题】:Tornado plot in RR中的龙卷风图
【发布时间】:2016-08-31 18:05:41
【问题描述】:

我正在尝试在 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

【问题讨论】:

    标签: r bar-chart mathematical-expressions


    【解决方案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

    这篇其他帖子可能会帮助您解决第二个问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多