2017-02-25 5 views
1

ggplotを使用してRで複雑なグラフを作成する際に、ある種の抽象的な質問(特定の例でサポートされています)例えば、私はこのようなグラフを作成する必要があります。 ggplotでプロットを作成した後のロジックR

私は私の心を持っている論理的な手順は次のとおりです。 まず、私は、溶融()関数を使用して広いから、長い形式に自分のデータを溶かします。
第2に、data = , aes(x=date, y=value, colour = variable, shape = variable) , size = , stat = 'identity'geom_line()geom_point()を追加するggplot()スクリプトを作成します。
第3に、scale_shape_manualscale_colour_manualを追加して、チャートと凡例をカスタマイズします。

私はそれが私に望みのチャートを与えるだろうと確信していますが、私は多くの疑問を持っています。伝説は必要な方法で描写されるでしょう。特に、同じチャートのポイントとラインの両方にscale_colour_manualを設定すると、凡例にポイントとラインのレコードが重複して表示されます。

以下

私は伝説に問題と一緒に必要なチャートを生成し、私のスクリプトのいずれかです。

p8_ch2_points_meltはポイントのデータが含まれ、 p8_ch2_line_meltはラインのデータが含まれています。

p8.2_rest <- ggplot() + 
    geom_point(data = p8_ch2_points_melt, aes(x=date, y=value, colour = variable, shape= variable), size = 1, stat = 'identity') + 
    geom_line (data = p8_ch2_line_melt, aes(x=date, y=value, colour = variable), size = 1, stat = 'identity') + 

scale_shape_manual (
    guide = "legend", 
    name = NULL, 
    breaks= c('eff_int', 'int'), 
    labels= c('Эффективная ставка, % годовых (левая ось)', 'Стоимость суверенных займов, % годовых (левая ось)'), 
    values = c(15,20))+ 

scale_colour_manual (
    guide = "legend", 
    name = NULL, 
    breaks= c('eff_int', 'int', 'debt_serv'), 
    labels= c('Эффективная ставка, % годовых (левая ось)', 'Стоимость суверенных займов, % годовых (левая ось)', 'Обслуживание долга, % от ВВП (левая ось)'), 
    values = c('#4477AA', '#117733', '#332288')) 

そして、ここではそれが生成チャート:

enter image description here

そして、ここで(dputされている)2つのデータフレームのため:

dput(p8_ch2_points_melt) 
structure(list(date = structure(c(2012, 2012.25, 2012.5, 2012.75, 
2013, 2013.25, 2013.5, 2013.75, 2014, 2014.25, 2014.5, 2014.75, 
2015, 2015.25, 2015.5, 2015.75, 2016, 2016.25, 2016.5, 2012, 
2012.25, 2012.5, 2012.75, 2013, 2013.25, 2013.5, 2013.75, 2014, 
2014.25, 2014.5, 2014.75, 2015, 2015.25, 2015.5, 2015.75, 2016, 
2016.25, 2016.5), class = "yearqtr"), variable = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L), .Label = c("eff_int", "int"), class = "factor"), 
    value = c(6.96419821086019, 7.14380786734124, 7.62285510953761, 
    8.38643647420047, 9.3298074353733, 9.39536175697088, 9.25562759246473, 
    9.01979842614537, 8.86956235820209, 8.71034537033914, 8.70483610509478, 
    8.86490412786529, 9.14046831486076, 9.25763491737298, 9.35166748435806, 
    9.61977735450941, 9.77846144170396, 9.79770969419896, 9.85126049926847, 
    10.7636292111401, 10.7026205049705, 9.83155682535731, 8.88716591127536, 
    7.27131536386736, 7.2219761501119, 9.51243063851385, 9.44429820351177, 
    8.41534119261688, 7.51079204000062, 6.82767573245953, 7.27469361353513, 
    15.2981698351549, 11.5648989165497, 9.18186633248605, 7.23361407952981, 
    7.09619633565995, 6.09043348368972, 5.33841979178199)), row.names = c(NA, 
-38L), .Names = c("date", "variable", "value"), class = "data.frame") 

dput(p8_ch2_line_melt) 
structure(list(date = structure(c(2012, 2012.25, 2012.5, 2012.75, 
2013, 2013.25, 2013.5, 2013.75, 2014, 2014.25, 2014.5, 2014.75, 
2015, 2015.25, 2015.5, 2015.75, 2016, 2016.25, 2016.5), class = "yearqtr"), 
    variable = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "debt_serv", class = "factor"), 
    value = c(10.8960973867467, 12.607562113883, 10.7487398451497, 
    9.89070432209185, 10.4942585698635, 7.75787413463193, 7.79618335620887, 
    7.85681809145533, 8.47139147230582, 15.2587567726622, 14.4634263544327, 
    15.8101561314042, 14.5915615542354, 17.8477420726091, 14.0181468565348, 
    16.2598789624509, 14.3942661723461, 14.0541133390243, 13.434090770495 
    )), row.names = c(NA, -19L), .Names = c("date", "variable", 
"value"), class = "data.frame") 

だから、私は上の専門家のための2つの質問を持っていますこのサイト: 1.このチャートを作成するとき、私は何が間違っていましたか? 2. ggplotでチャートを作成するための適切なロジックを作成するために、どの文献を読むことをお勧めしますか?

ありがとうございます。

+0

(32が空白の形状である)、その後ggplotはそれらをマージしますスケールを同じ休憩やラベルを与えてみては?色と形の単一の凡例が欲しいですか? –

+0

はい、一般的に使用される凡例のタイプが必要です。ラインとポイントに1つの凡例が必要です。キーとキーラベルを二重にしません。 – dkolkin

答えて

1

は正確にご希望の出力は何

ggplot(p8_ch2_line_melt, aes(as.numeric(date), value, color = variable, shape = variable)) + 
    geom_line(size = 1) + 
    geom_point(data = p8_ch2_points_melt, size = 1) + 
    scale_shape_manual(
    breaks= c('eff_int', 'int', 'debt_serv'), 
    name = NULL, 
    labels= c('Эффективная ставка, % годовых (левая ось)', 'Стоимость суверенных займов, % годовых (левая ось)', 'Обслуживание долга, % от ВВП (левая ось)'), 
    values = c(32, 15, 14)) + 
    scale_colour_manual (
    breaks= c('eff_int', 'int', 'debt_serv'), 
    name = NULL, 
    labels= c('Эффективная ставка, % годовых (левая ось)', 'Стоимость суверенных займов, % годовых (левая ось)', 'Обслуживание долга, % от ВВП (левая ось)'), 
    values = c('#4477AA', '#117733', '#332288')) 
+0

ありがとうございました。凡例の左のキーは、プロット上に3つの線があるように見えるが、チャートを変更した。ポイントが2つ、フラットが1つあった。理想的には、2つの凡例キーをドットのように見せたり、ラインのように見せたりするのが好きです。 私はあまりにも不透明に聞こえないことを願っています。 – dkolkin

関連する問題