sql >> データベース >  >> RDS >> Oracle

ggplot2 の積み上げ面グラフが空になるのはなぜですか

    2 番目の質問から始めましょう。こちらの方が簡単です。 dplyr の使用 パッケージ、 top_n を使用できます 特定の列の n 個の最大行を取得します。例:

    > top_n(p_ash_r_100a, 3, SMPL_CNT) %>% arrange(desc(SMPL_CNT))
    # A tibble: 3 × 5
                SMPL_TIME        SQL_ID     MODULE                   EVENT SMPL_CNT
                   <dttm>         <chr>      <chr>                   <chr>    <int>
    1 2017-04-11 09:01:00        NO_SQL GoldenGate                     CPU        7
    2 2017-04-11 09:00:00 dgzp3at57cagd GoldenGate db file sequential read        2
    3 2017-04-11 09:01:00 37cspa0acgqxp GoldenGate db file sequential read        2
    

    n 位に同点がある場合は、n 行を超えることに注意してください。したがって、top_n(p_ash_r_100, 10, SMPL_CNT) 4 番目の 17 ウェイ タイのため、サンプル データ セット全体が返されます。

    最初の質問については、 geom_area のドキュメント 手がかりを提供します:

    これは、geom_area が x にマップされる列は数値である必要があります。 p_ash_r_100 のリストに基づく 、 SMPL_TIME は文字ベクトルのようです。 lubridate で パッケージ、SMPL_TIME を変換できます dmy_hm で日時に :

    p_ash_r_100a <- p_ash_r_100 %>%
      mutate_at(vars(SMPL_TIME), dmy_hm)
    

    ただし、 y の値が複数あるため、必要なプロットを取得するにはこれだけでは不十分です。 x の組み合わせごとに と fill (これは geom_area の正しい美学です 、「col」ではありません "). プロットする前にデータを要約する必要があります:

    p_ash_r_100a %>%
      group_by(SMPL_TIME, EVENT) %>%
      summarise(total = sum(SMPL_CNT)) %>%
      ggplot(aes(SMPL_TIME, total, fill = EVENT)) +
      geom_area()
    

    しかし、プロットはまだ正しくありません。これは SMPL_TIME のすべての組み合わせのためです と EVENT はデータセットに表示されません。 geom_area を明示的に伝える必要があります その y 行が欠落している場合、 はゼロに等しくなります。 1 つの方法は、便利な fill を使用することです。 tidyr::spread の引数 .

    group_by(p_ash_r_100a, SMPL_TIME, EVENT) %>%
      summarise(smpl_sum = sum(SMPL_CNT)) %>%
      spread(EVENT, smpl_sum, fill = 0) %>% 
      gather(EVENT, smpl_sum, CPU, `db file sequential read`, 
             `direct path write`,
             `Log archive I/O`) %>%
      ggplot(aes(x = SMPL_TIME, y = smpl_sum, fill = EVENT)) +
      geom_area()
    




    1. 日付に月を追加するSQL

    2. MySQLWHERELIKEがphpおよびpdoバインドを使用して複数のフィールドで機能しない

    3. Logcatによると無効な列データ1

    4. mysql全文検索エラー