gpt4 book ai didi

r - R中的 Tornado 图

转载 作者:行者123 更新时间:2023-12-05 06:42:28 25 4
gpt4 key购买 nike

我正在尝试在 R 中制作 Tornado 图(又名灵敏度图)。目标是可视化某些变量增加 10% 和减少 10% 的效果。

到目前为止我得到了这个结果

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. 使每个变量的条形对齐(不像现在这样并列)。换句话说,每个可变条的绿色和红色边应该在中心相交,总共有四个条。

  2. 在 y 轴上粘贴数学字符(而不是文本)。 “V_bar”列应该是顶部有条形的 V。

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

最佳答案

因此,您可以使用 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

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

关于r - R中的 Tornado 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37059281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com