2

次のコードを使用します。

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')

出力:

ここに画像の説明を入力

私の問題は次のとおりです。

  • このデュアル y 軸プロットで棒グラフと折れ線グラフを揃える方法を知っている人はいますか? 両方のグラフの目盛りを x 軸に合わせたいと思います。

編集

この質問を編集して、問題をよりよく示すより良い例を提供することにしました。

4

1 に答える 1

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 軸を作成しました (コードの最後の 2 行を確認してください)。結果は最適ではありませんが、機能します。

この回答も確認できます。

PS質問のサンプルコードは、githubのこの投稿からのものです。上記は(幸いなことに)そこで問題として提起されました。修正された場合(またはこれを修正する方法がある場合)、回答を更新します。

于 2015-02-13T16:07:52.887 に答える