【发布时间】:2018-10-19 06:08:09
【问题描述】:
我用 ggplot2 geom_bar 创建了一个条形图,并希望在条形图中有两个指标。我用融化来做到这一点。但是,我现在需要另一个刻度的第二个 y 轴,因为这两个指标的数字相差太大。
下面是我使用的数据框和代码:
df <- data.frame(categories = c("politics", "local", "economy", "cultural events",
"politics", "local", "economy", "cultural events"),
metric = c("page", "page", "page", "page",
"product", "product", "product", "product"),
value = c(100L, 50L, 20L, 19L,
950000L, 470000L, 50000L, 1320L))
下面是我用来创建绘图和第二个 y 轴的代码:
x <- ggplot(df, aes(x=categories, y=value, fill = metric))
x + geom_bar(stat = "identity", position = "dodge") +
scale_y_continuous(sec.axis=sec_axis(~. *1000), limits=c(1,1000))
但是,现在图表中不再出现条形了...有人知道如何解决这个问题吗?
【问题讨论】:
-
可重现的示例数据?
-
您应该考虑对变量进行分面,而不是添加转换后的第二个 y 轴,这不会显示您希望它们出现的
page-data,因为第二个轴只是重新标记轴并且不使用page数据创建新的绘图层。您的绘图中没有条形,因为您有limits = c(1, 1000)。将其更改为limits = c(0, 1000) -
请使用
dput添加数据,这样我们就可以在自己的会话中运行它,而不是粘贴表格。作为第一个猜测,尝试从aes内部删除df$。当您引用aes中的变量时,您永远不需要使用df$ -
@kath 感谢您对限制的编辑和建议。你是对的,现在我有页面数据。但是,面对变量是什么意思?我以前从来没有这样做过......
-
FWIW...死双轴情节,死! (这里有一篇关于为什么他们显然很烂的博客文章blog.datawrapper.de/dualaxis)
标签: r ggplot2 scale geom-bar yaxis