2017-06-10 23 views
-2

グラデーションカラーを作成するソリューションを見つけるのに苦労します。
これはHow to make gradient color filled timeseries plot in Rに似たものが、私はこの例を再利用するための高度にビット
enter image description heregeom_areaを使用した垂直グラデーションカラー

(いけない青いバーを気)のようになります方法です。
Error in rowSums(na) : 'Calloc' could not allocate memory (172440001 of 16 bytes)

これは、データのサブセットのみです、nograpesが提供する答えを試してみましたが、私のPCは、いくつかの6-7分のために凍結した後、私がメッセージを持って、私は、任意の負の値を持っていけないとmaxは80.Iです841行(一部はNAsを含む)であり、以前の答えの解決策は私にとってはほとんど役に立たなかった。

df <- structure(list(date = structure(c(1497178800, 1497182400, 1497186000, 
1497189600, 1497193200, 1497196800, 1497200400, 1497204000, 1497207600, 
1497211200, 1497214800, 1497218400, 1497222000, 1497225600, 1497229200, 
1497232800, 1497236400, 1497240000, 1497243600, 1497247200, 1497250800, 
1497254400, 1497258000, 1497261600, 1497265200, 1497268800, 1497272400, 
1497276000, 1497279600, 1497283200, 1497286800, 1497290400, 1497294000, 
1497297600, 1497301200, 1497304800, 1497308400, 1497312000, 1497315600, 
1497319200, 1497322800, 1497326400, 1497330000, 1497333600, 1497337200, 
1497340800, 1497344400, 1497348000, 1497351600, 1497355200), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), dk_infpressure = c(22, 21.6, 21.2, 
20.9, 20.5, 20.1, 19.8, 19.4, 19, 18.6, 18.2, 17.9, 17.5, 17.1, 
16.8, 16.4, 16, 15.6, 15.2, 14.9, 14.5, 14.1, 13.8, 13.4, 13, 
12.5, 11.9, 11.4, 10.8, 10.3, 9.8, 9.2, 8.7, 8.1, 7.6, 7, 6.5, 
6, 5.4, 4.9, 4.3, 3.8, 3.2, 2.7, 2.2, 1.6, 1.1, 0.5, 0, 0)), .Names = c("date", 
"dk_infpressure"), row.names = c(NA, -50L), class = c("tbl_df", 
"tbl", "data.frame")) 

コードは、基本的なプロットを取得する:グラデーションの塗りを取ることができない

ggplot()+ 
geom_area(data=df, aes(x = date, y= dk_infpressure))+ 
scale_y_continuous(limits = c(0, 80)) 
+2

あなたは私たちがあなたのためのコードを書いてみませんか?答えは既に存在するので、datetimeオブジェクトのために変更するだけで済みます。 – Masoud

+0

私は質問に変更を加えました。もっと明確にするためにもっと何かできるかどうか教えてください。 –

答えて

0

geom_areaので、それはやや難しい問題です。

ここで明らかにハックが、おそらく十分なラスターを行うオプション(ただし、xとyのサイズが異なるためgeom_tile使用)、クロッピングとggforce::geom_link(勾配をプロットすることができgeom_segmentのバージョン)を有する不規則縁を覆うだ:

library(tidyverse) 

df %>% 
    mutate(dk_infpressure = map(dk_infpressure, ~seq(0, .x, .05))) %>% # make grid of points 
    unnest() %>% 
    ggplot(aes(date, dk_infpressure, fill = dk_infpressure)) + 
    geom_tile(width = 3600, height = 0.05) + 
    # hide square tops 
    ggforce::geom_link(aes(color = dk_infpressure, xend = lag(date), yend = lag(dk_infpressure)), 
         data = df, size = 2.5, show.legend = FALSE) + 
    scale_x_datetime(expand = c(0, 0)) + # hide overplotting of line 
    scale_y_continuous(expand = c(0, 0)) 

+0

ありがとう@alistaire!私はいくつかの質問があります:私は私の実際のデータでこれを実行すると、エラーが表示されます: 'seq.default(0、.x、0.05)のエラー: 'to'は有限数でなければなりません。色を黄色と赤色のグラデーションに変更するにはどうすればよいですか?イラブは80で固定できますか? –

+0

このエラーはおそらく 'dk_infpressure'の' NA'値のためです。とにかくプロットされないので、プロットする前にdata.frame全体で 'na.omit'または' tidyr :: drop_na'を呼び出すことができます。グラデーションを変更するには、 'scale_fill_gradient'と' scale_color_gradient'(または同等のもの)を使います。 – alistaire

関連する問題