web-dev-qa-db-ja.com

ggplotlyでfacet_wrapを使用する最初と最後のファセットが中央のファセットよりも大きい

サンプルデータの使用:

_library(tidyverse)
library(plotly)

myplot <- diamonds %>% ggplot(aes(clarity, price)) +
  geom_boxplot() +
  facet_wrap(~ clarity, ncol = 8, scales = "free", strip.position = "bottom") +
  theme(axis.ticks.x = element_blank(),
        axis.text.x = element_blank(),
        axis.title.x = element_blank())

ggplotly(myplot)
_

次のようなものを返します:

enter image description here

内側のファセットが最初と最後に比べてひどくスケーリングされており、余分なパディングがたくさんある場合。私はこれらの質問から解決策を見つけようとしました:

numberがファセットの場合、ggplotlyは正しく機能しません

R:facet_wrapがShinyアプリのggplotlyで正しくレンダリングされない

試行錯誤の結果、panel.spacing.x = unit(-0.5, "line")theme()を使用しましたが、余分なパディングがなくなったため、少し見栄えがよくなりましたが、内部のファセットはまだかなり小さくなっています。

enter image description here

また、余計な質問ですが重要ではありませんが、ストリップラベルはggplotly()呼び出しで一番上にあります。進行中の問題のようです ここ 、誰かがハックな回避策を持っていますか?

編集:実際のデータセットでは、スケールがまったく異なるため、ファセットごとにy軸ラベルが必要です。そのため、例ではそれらを保持し、_facet_wrap_が必要なのはそのためです。説明のための私の実際のデータセットのスクリーンショット:

enter image description here

4
Nautica

選択したプロットで苦労している場合は、別のプロットをまとめて検討すると役立つことがあります。それはすべて、視覚化したいものに依存します。ボックスプロットが機能することもあれば、ヒストグラムが機能することもあり、密度が機能することもあります。これは、密度プロットが多くのパラメーターのデータ分布をすばやく理解する方法の例です。

library(tidyverse)
library(plotly)
myplot <- diamonds %>% ggplot(aes(price, colour = clarity)) +
  geom_density(aes(fill = clarity), alpha = 0.25) +
  theme(axis.ticks.x = element_blank(),
        axis.text.x = element_blank(),
        axis.title.x = element_blank())

enter image description here

1
Paul van Oppen