2017-12-20 35 views
-1

私は、次のデータを密度プロットを作成する:X軸上ggplot2密度プロット

interval  fr  mi  ab 
0x    9765 3631 12985 
1x    2125 2656 601 
2x    1299 2493 191 
3x    493  2234 78 
4x    141  1559 20 
5x and more  75  1325 23 

私は間隔を持ちたいとY軸上で私が持っていたいです異なる色の "fr"、 "mi"、 "ab"の濃度。

私の想像力はこのグラフのようなものでした。

enter image description here

私の問題は、私はY軸上の密度を取得する方法がわからないということです。私はgeom_densityで試してみましたが、うまくいきませんでした。これは私がしたい結果ではない以下のプロットを与える

DS29 <-as.data.frame(DS29) 
    DS29$interval <- factor(DS29$interval, levels = DS29$interval) 
    DS29 <- melt (DS29,id=c("interval")) 
output$DS51<- renderPlot({ 
    plot_tab6 <- ggplot(DS29, aes(x= interval,y = value, fill=variable, group = variable)) + 
    geom_col()+ 
    geom_line() 
    return(plot_tab6) 
}) 

:私は達成最良の結果は、次のコードを使用していました。あなたは私が望む結果にどのように到達できるか考えていますか?どうもありがとうございました。

enter image description here

+0

この? 'ライブラリ(tidyverse); read.tableを(テキスト=」区間FR MI AB 0X 9765 3631 12985 1X 2125 2656 601 2X 1299 2493 191 3×493 2234 78 4X 141 1559 20" 、ヘッダ= T)%>% ギャザー(キー、value、-interval)%>% ggplot(aes(x = value、fill = key))+ geom_density() ' – Jimbou

答えて

0

あなたのサンプルデータを見て、私はあなたがgeom_densityを使用したい場合はわかりません。 ?geom_densityと入力すると、いくつかのコード例が表示されます。私がヘルプページから1つの例を取っ​​た場合、あなたは欠けているものを見ることができます。 X軸の

ggplot(diamonds, aes(depth, fill = cut, colour = cut)) + 
geom_density(alpha = 0.1) + 
xlim(55, 70) 

depthは連続変数ではなく、カテゴリ変数です。現在のデータには、x軸にカテゴリ変数があります。 geom_densityについては、x軸の値で何かの密度を探しています。上記の例のコードは、「Ideal」と分類されたダイヤモンドの密度が61.5-62付近に高密度であることを示しています。これは、「Ideal」ダイヤモンドの中で最も大きな割合が61.5-62周辺の深さ値を持つことを示しています。実際、「理想」ダイヤモンドの深さの平均値は61.71です。つまり、密度を計算するには複数のデータポイントが必要です。データには、グループごとに1つのデータポイント(たとえば、ab、fr、mi)が1つだけあります。だから、あなたのデータが密度を計算する準備が整っていないとは思わない。

現在のデータを使用して質問に示唆したようなグラフィックを描きたい場合は、1)intervalを数値変数に変換し、2)長い形式に変換し、3) stat_smoothを使用してください。

library(tidyverse) 

mydf %>% 
mutate(interval = as.numeric(sub(x = as.character(interval), pattern = "x", replacement = ""))) %>% 
gather(key = group, value = value, - interval) -> temp 

ggplot(temp, aes(x = interval, y = value, fill = group)) + 
stat_smooth(geom = "area", span = 0.4, method = "loess", alpha = 0.4) 

enter image description here

関連する問題