質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

0回答

1566閲覧

【R】ggplot2によるヒートマップ図と折れ線グラフの重ね合わせる方法

MS13

総合スコア0

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

1クリップ

投稿2020/08/13 14:12

前提・実現したいこと

Rのggplot2ライブラリを利用して以下のデータで作成したヒートマップ図と折れ線グラフを重ね合わせた図を作成したいです。
以下のdf_sのvariable列とdf_tpのprice列が同じ単位の値でそれらを縦軸として重ね合わせた図を作成したいのですがうまく行きません。
試したことに記載の部分までできているのですが、左側にdf_sのvariable列の尺度を表示させてうまく上下の空白をなくす方法を教えていだだきたいです。

【ヒートマップ図を作成するためのデータ】

R

1> head(df_s) 2 time variable value 31 2020-01-01T20:40:00Z 109.0 0.4483 42 2020-01-02T20:40:00Z 109.0 0.3204 53 2020-01-01T20:40:00Z 108.95 0.3267 64 2020-01-02T20:40:00Z 108.95 0.3596 75 2020-01-01T20:40:00Z 108.9 0.5764 86 2020-01-02T20:40:00Z 108.9 0.5557 9 10> sapply(df_s,class) 11 time variable value 12"character" "factor" "numeric"

【折れ線グラフを作成するためのデータ】

R

1> df_tp 2 time price 31 2020-01-01T20:40:00Z 108.628 42 2020-01-02T20:40:00Z 108.526 5 6> sapply(df_tp,class) 7 time price 8"character" "numeric"

発生している問題・エラーメッセージ

ただ以下のようにヒートマップ図と折れ線グラフが重ならない物ができてしまいます。
イメージ説明

エラーメッセージ

該当のソースコード

上記のグラフを作成したプログラムは以下になります。

R

1ggplot(data = df_s, aes(x = time, y = variable)) + 2 theme_gray(base_family = "HiraKakuPro-W3") + 3 geom_tile(aes(fill = value)) + 4 scale_fill_gradientn(colours = c("yellow", "red")) + 5 geom_text(aes(label = value)) + scale_y_discrete(name="", limits = rev(levels(df_s$variable))) + geom_line(data = df_tp, aes(x = time, y = price, group = 1), color = "red")

試したこと

df_tpのprice列のデータ型がnumeric型で、ds_sのvariable列のデータ型がfactor型なのがいけないのかと思い、ds_sのvariable列のデータ型をnumeric型に変更してみで上記のコードを実行したのですが今度は左側のprice,variable列の値が出なくなってしまいました。

R

1> df_s$variable <- as.numeric(as.character(df_s$variable)) 2> head(df_s) 3 time variable value 41 2020-01-01T20:40:00Z 109.00 0.4483 52 2020-01-02T20:40:00Z 109.00 0.3204 63 2020-01-01T20:40:00Z 108.95 0.3267 74 2020-01-02T20:40:00Z 108.95 0.3596 85 2020-01-01T20:40:00Z 108.90 0.5764 96 2020-01-02T20:40:00Z 108.90 0.5557 10> sapply(df_s,class) 11 time variable value 12"character" "numeric" "numeric" 13 14> ggplot(data = df_s, aes(x = time, y = variable)) + 15 theme_gray(base_family = "HiraKakuPro-W3") + 16 geom_tile(aes(fill = value)) + 17 scale_fill_gradientn(colours = c("yellow", "red")) + 18 geom_text(aes(label = value)) + scale_y_discrete(name="", limits = rev(levels(df_s$variable))) + geom_line(data = df_tp, aes(x = time, y = price, group = 1), color = "red")

イメージ説明

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shimiken

2020/08/18 07:40

ヒートマップ図と折れ線グラフを重ねた図というのがイメージできないので、 例を示していただけますか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問