r - 带有 2 个变量、2 个 y 轴的条形图

标签 r graph plot

我有以下数据

test<-data.frame(group=1:10, var.a=rnorm(n=10,mean=500,sd=20), var.b=runif(10))

我想要一个带有 2 y 轴的条形图(一个用于 var.a,一个用于 var.2)。每组(x 轴,1:10)应该有 2 个彼此相邻的条形,一个用于 var.a,一个用于 var.b。

由于 var.a 和 var.b 的数量级不同,我无法使用一个 y 轴

这可能与基础 R 吗?

谢谢

最佳答案

使用 graphics R 中的包,可以创建新变量作为 var.a 中的值和 var.b转换为各个变量中最大值的比例:

test <- data.frame(group = 1:10, var.a = rnorm(n = 10, mean = 500, sd = 20),
  var.b = runif(10))

funProp <- function(testCol) {
    test[, testCol]/max(test[, testCol])
}

test$var.a.prop <- funProp("var.a")
test$var.b.prop <- funProp("var.b")

然后使用 barplot() 绘制绘图没有轴:
barplot(t(as.matrix(test[, c("var.a.prop", "var.b.prop")])), beside = TRUE,
  yaxt = "n", names.arg = test$group)

然后使用标签的原始值范围(labels 参数)和比例值范围添加左侧和右侧的轴以将标签放置在轴上(at 参数)(这部分不漂亮,但它完成了工作):
axis(2, at = seq(0, max(test$var.a.prop), length.out = 10),
  labels = round(seq(0, max(test$var.a), length.out = 10)))

axis(4, at = seq(0, max(test$var.b.prop), length.out = 10),
  labels = round(seq(0, max(test$var.b), length.out = 10), 2))

(抱歉没有图片)

编辑:

稍微获取轴 pretty呃,
myLeftAxisLabs <- pretty(seq(0, max(test$var.a), length.out = 10))
myRightAxisLabs <- pretty(seq(0, max(test$var.b), length.out = 10))

myLeftAxisAt <- myLeftAxisLabs/max(test$var.a)
myRightAxisAt <- myRightAxisLabs/max(test$var.b)

barplot(t(as.matrix(test[, c("var.a.prop", "var.b.prop")])),
  beside = TRUE, yaxt = "n", names.arg = test$group,
  ylim=c(0, max(c(myLeftAxisAt, myRightAxisAt))))

axis(2, at = myLeftAxisAt, labels = myLeftAxisLabs)

axis(4, at = myRightAxisAt, labels = myRightAxisLabs)

关于r - 带有 2 个变量、2 个 y 轴的条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9852270/

相关文章:

r - 如何有条件地删除 write.csv 中的引号?

database - 如何将图形数据存储在数据库中?

r - ggplotly 在散点图中 Shiny 的生产线

python - 同一个图中的多个 matplotlib 图 + 到 pdf-Python

r - 如何使用 ggplot 按降序对水平条形图进行排序?

r - 如何使用外部浮点变量在 sqldf 语句中进行乘法

python - pandas2ri.ri2py_dataframe(r_dataframe) 返回 float 而不是 ISO-8601 (YYYY-MM-DD) 格式的日期

r - 仅当同一列的组中存在另一个值时,dplyr 才对值进行过滤

javascript - 如何使 D3 Force Directed Graph 每次在相同位置生成节点

python - 将Python 2脚本移植到Python 3时出错