ggplot2でのヒストグラムと棒グラフの組み合わせ、またはhist()で可能なようにプロット

G. Sozu

hist()関数を使用して、ヒストグラムと棒グラフを組み合わせて作成しました。以下の画像とコード。

そして今、私はggplot2またはplotlyで同様のことをしたいと思っています。なぜなら、インタラクティブなプロットのような光沢のあるアプリでそのようなプロットを持ちたいからです。何時間も経った後、私はそれを行う方法の解決策を見つけられませんでした。

プロットのx軸には温度があり、y軸には温度の範囲内に住む人々の合計があります。また、各ビンの上には、各ビンの実際の人数も含まれています。同じビンに複数回リストされている人もいる可能性があるので、「ユニークな」人の合計もあります。

これはどのように見えるかhist()です。

いつものように、どんな助けも大歓迎です。

# create df
mydf <- data.frame(
  City.as.ID=c("Hønefoss : Norwegen", "Hønefoss : Norwegen", "Hønefoss : Norwegen", "Hønefoss : Norwegen", "Hønefoss : Norwegen", "Hønefoss : Norwegen",
               "Jessheim : Norwegen","Jessheim : Norwegen", "Jessheim : Norwegen", "Jessheim : Norwegen", "Jessheim : Norwegen", "Jessheim : Norwegen",
               "Hanko : Finnland","Hanko : Finnland","Hanko : Finnland","Hanko : Finnland","Hanko : Finnland", "Hanko : Finnland", 
               "Espoo : Finnland","Espoo : Finnland","Espoo : Finnland","Espoo : Finnland","Espoo : Finnland","Espoo : Finnland"),
  peoplefreq=c(1,1,1,1,1,1,
               3,3,3,3,3,3,
               18,18,18,18,18,18,
               2,2,2,2,2,2),

  temperature=c(-4.93, -3.55, 0.82, 3.7, 10.18,13.41,
                -1.92, -2.6, 2.19, 4.04, 10.75, 14.18,
                -2.39, -2.54, 0.78, 2.39, 9.22, 13.41,
                -2.86, -3.51, 0.12, 2.06, 9.16, 13.35),
  row_id=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)
)
mydf

# sorting the temperature column
mydf <- mydf[order(mydf$temperature),]
mydf

# from here all the work for plot
mydata <- mydf
mx <- mydata$temperature
my <- mydata$peoplefreq
mc <- mydata$City.as.ID

# get the data from hist()
h <- hist(mydata$temperature, plot = FALSE)

# get the breakpionts
breaks <- data.frame(
  "start"=h$breaks[-length(h$breaks)], 
  "end"=h$breaks[-1]
)
breaks

# sum up the y values within the x bins
sums_of_y_within_x_bins <- apply(breaks, MARGIN=1, FUN=function(x) { sum(my[ mx >= x[1] & mx < x[2] ]) })
sums_of_y_within_x_bins

# sums instead of frequency
h$counts <- sums_of_y_within_x_bins

# sum up the unique values of y within the x bins
# in between temperature -5 to 0 there are total 48 peoples but some of them are multiple times listed
# in real there are only 24 people
uniqvalues_of_y <- apply(breaks, MARGIN=1, FUN=function(x) {
  newdata <- unique(subset(mydata, select = c(City.as.ID, peoplefreq)))
  sum(newdata$peoplefreq[is.element(newdata$City.as.ID, as.vector(unique(mc[ mx >= x[1] & mx < x[2] ])))])
})
uniqvalues_of_y

uniqvalues_of_y <- as.character(uniqvalues_of_y)

# the final plot as a mix of histogram and bar chart
plot(h, labels = uniqvalues_of_y , ylab="Total sum of y", col="gray")

# some try
library(ggplot2)

#here it counts how many values are within the x bin but not the sum
ggplot(mydata, aes(x=mx, fill=my)) + 
  geom_histogram(breaks=c(-5,0,5,10,15), color="black")
ジャック・ブルックス

グラフはあまり明確ではなく、別のアプローチが必要かもしれませんが、これを実行したい場合は、手動でデータをビニングできます。

library(dplyr)
library(ggplot2)

mydf %>%
  mutate(temperature_group = cut(temperature, seq(-5, 15, by = 5))) %>%
  group_by(temperature_group, City.as.ID) %>%
  summarise(sum_peoplefreq = sum(peoplefreq), unique_people = first(peoplefreq)) %>%
  summarise_at(vars(sum_peoplefreq, unique_people), "sum") %>% 
  ggplot(aes(x = temperature_group, y = sum_peoplefreq, label = unique_people)) +
  geom_col(fill = "grey80", color = "black") + 
  geom_text(nudge_y = 2) + 
  theme_classic()

ここに画像の説明を入力してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ggplot2での大きな行列のヒストグラムのプロットは、基本hist()よりも20倍遅くなります。

分類Dev

ggplot2で棒グラフと折れ線グラフを組み合わせてプロットする方法

分類Dev

棒グラフとパラメーター推定プロットを1つの図として組み合わせる方法。ggplot2

分類Dev

ggplot2:ヒストグラム、ラグプロット、ロジスティック回帰予測を1つのグラフに組み合わせる方法

分類Dev

ヒストグラム:ggplot2で連続値と離散値を組み合わせる

分類Dev

上限までのリストのすべての可能な組み合わせを生成するブルートフォースプログラムを作成するにはどうすればよいですか?

分類Dev

2つのデータフレームヒストグラムを1つのプロットに組み合わせる方法は?

分類Dev

クラスター化された縦棒グラフと複数の線マーカープロットをExcel2010で組み合わせる

分類Dev

すべてのエントリを組み合わせたスタックおよびグループ化されたグラフggplot2

分類Dev

Javaプログラムをリモートコマンドとして呼び出しながらローカルファイルを提供できるように、Javaプログラムとシェルスクリプトの組み合わせを作成するにはどうすればよいですか?

分類Dev

列の値を組み合わせて、Altairでトレリス積み上げ棒グラフをプロットします

分類Dev

ggplot2の折れ線グラフと棒グラフを1つのグループ化変数と組み合わせる方法は?

分類Dev

同じファセットの下で複数のggplotグラフを異なるデータフレームと組み合わせるにはどうすればよいですか?

分類Dev

与えられたドロップダウンメニューから選択されたすべての可能な組み合わせについて、ウェブサイトから結果を「スクレイプ」するPythonプログラムを作成するにはどうすればよいですか?

分類Dev

Tableauで棒グラフの2つの棒を組み合わせる方法は?

分類Dev

Tableauで棒グラフの2つの棒を組み合わせる方法は?

分類Dev

結合されたggplot2プロットに凡例を表示する-積み上げ棒グラフと線

分類Dev

ggplot2の異なるデータセットでヒストグラムと密度プロットを混合します

分類Dev

データセットのヒストグラムのような棒グラフを作成するにはどうすればよいですか?

分類Dev

プロット:棒グラフと棒グラフを組み合わせてサブプロットとしてプロットする方法は?

分類Dev

棒グラフと折れ線グラフを組み合わせたJfreeChart。折れ線グラフで3ポイントの平均を作成しようとしています。値が正しく整列していません

分類Dev

これら2つのプログラムをどのように組み合わせるのですか?

分類Dev

ggplot2、dplyr、およびforcatsでカスタム関数を使用して、降順の頻度棒グラフをプロットします

分類Dev

R histヒストグラムとggplotヒストグラムの出力が非常に異なるのはなぜですか?

分類Dev

棒グラフの列が並んでいるggplot2にプロットを作成します

分類Dev

異なる行(データフレーム)のグラフを組み合わせて、Rの同じグラフにプロットする方法は?

分類Dev

1つのプロットで2つ以上のプロットをggplot2と組み合わせる方法

分類Dev

Haskellプログラミングで関数の2つのリストを交互に組み合わせた結果の関数を返す方法は?

分類Dev

ggplot2の積み上げ棒グラフの上に線をプロットします

Related 関連記事

  1. 1

    ggplot2での大きな行列のヒストグラムのプロットは、基本hist()よりも20倍遅くなります。

  2. 2

    ggplot2で棒グラフと折れ線グラフを組み合わせてプロットする方法

  3. 3

    棒グラフとパラメーター推定プロットを1つの図として組み合わせる方法。ggplot2

  4. 4

    ggplot2:ヒストグラム、ラグプロット、ロジスティック回帰予測を1つのグラフに組み合わせる方法

  5. 5

    ヒストグラム:ggplot2で連続値と離散値を組み合わせる

  6. 6

    上限までのリストのすべての可能な組み合わせを生成するブルートフォースプログラムを作成するにはどうすればよいですか?

  7. 7

    2つのデータフレームヒストグラムを1つのプロットに組み合わせる方法は?

  8. 8

    クラスター化された縦棒グラフと複数の線マーカープロットをExcel2010で組み合わせる

  9. 9

    すべてのエントリを組み合わせたスタックおよびグループ化されたグラフggplot2

  10. 10

    Javaプログラムをリモートコマンドとして呼び出しながらローカルファイルを提供できるように、Javaプログラムとシェルスクリプトの組み合わせを作成するにはどうすればよいですか?

  11. 11

    列の値を組み合わせて、Altairでトレリス積み上げ棒グラフをプロットします

  12. 12

    ggplot2の折れ線グラフと棒グラフを1つのグループ化変数と組み合わせる方法は?

  13. 13

    同じファセットの下で複数のggplotグラフを異なるデータフレームと組み合わせるにはどうすればよいですか?

  14. 14

    与えられたドロップダウンメニューから選択されたすべての可能な組み合わせについて、ウェブサイトから結果を「スクレイプ」するPythonプログラムを作成するにはどうすればよいですか?

  15. 15

    Tableauで棒グラフの2つの棒を組み合わせる方法は?

  16. 16

    Tableauで棒グラフの2つの棒を組み合わせる方法は?

  17. 17

    結合されたggplot2プロットに凡例を表示する-積み上げ棒グラフと線

  18. 18

    ggplot2の異なるデータセットでヒストグラムと密度プロットを混合します

  19. 19

    データセットのヒストグラムのような棒グラフを作成するにはどうすればよいですか?

  20. 20

    プロット:棒グラフと棒グラフを組み合わせてサブプロットとしてプロットする方法は?

  21. 21

    棒グラフと折れ線グラフを組み合わせたJfreeChart。折れ線グラフで3ポイントの平均を作成しようとしています。値が正しく整列していません

  22. 22

    これら2つのプログラムをどのように組み合わせるのですか?

  23. 23

    ggplot2、dplyr、およびforcatsでカスタム関数を使用して、降順の頻度棒グラフをプロットします

  24. 24

    R histヒストグラムとggplotヒストグラムの出力が非常に異なるのはなぜですか?

  25. 25

    棒グラフの列が並んでいるggplot2にプロットを作成します

  26. 26

    異なる行(データフレーム)のグラフを組み合わせて、Rの同じグラフにプロットする方法は?

  27. 27

    1つのプロットで2つ以上のプロットをggplot2と組み合わせる方法

  28. 28

    Haskellプログラミングで関数の2つのリストを交互に組み合わせた結果の関数を返す方法は?

  29. 29

    ggplot2の積み上げ棒グラフの上に線をプロットします

ホットタグ

アーカイブ