使用以下代码:
library(ggvis)
library(dplyr)
mydf2 <- iris %>%
group_by(Species) %>%
summarize(Sepal.Length = mean(Sepal.Length),
Sepal.Width = mean(Sepal.Width))
mydf2 %>% as.data.frame() %>%
ggvis(x = ~ Species, y = ~ Sepal.Length ) %>%
layer_bars(fillOpacity := 0.1 ) %>%
add_axis("y", "ywidth", orient = "right", grid = FALSE) %>%
layer_lines(prop("y", ~ Sepal.Width, scale = "ywidth")) %>%
add_axis('x', title='the species', properties = axis_props(labels=list(fill='blank'))) %>%
add_axis('x', 'myx2', orient='bottom', title='') %>%
layer_lines(prop("x", ~ Species, scale = "myx2"), stroke := 'blank')
输出:
我的问题是:
修改
我决定编辑这个问题并提供一个更好的例子来说明问题。
答案 0 :(得分:1)
经过大约4个月的研究并进行了一些研究后,我找到了解决这个问题的方法,尽管它有点像黑客:
mydf2 %>% as.data.frame() %>% mutate(Species2= as.numeric(Species)) %>%
ggvis(x = ~ Species2, y = ~ Sepal.Length ) %>%
layer_bars(fillOpacity := 0.1, width = 0.9 ) %>%
add_axis("y", "ywidth", orient = "right", grid = FALSE) %>%
layer_lines(prop("y", ~ Sepal.Width, scale = "ywidth")) %>%
add_axis('x', title='the species', properties = axis_props(labels=list(fill='blank'))) %>%
add_axis('x', 'myx2', orient='bottom', title='', grid=F) %>%
layer_lines(prop("x", ~ Species, scale = "myx2"), stroke := 'blank')
<强>输出强>
上述答案的理由是,为了使线和条形图对齐,x轴需要是数字。所以,我做了一个新的分类x轴,用于绘制一条不可见的线(检查最后两行代码)。结果不是最优的,但它确实有效。
您也可以查看this回答。
P.S。该问题的示例代码来自github上的this帖子。上面已经(幸运地)提出了一个问题。如果它得到修复(或者有办法解决这个问题),我会更新答案。