私はRの初心者です。ggplot2を使ってかなり基本的なデータからグラフを作成するコードを書いています。私の描画コードは、現在、次のようになりますgeom_hlineのためのggplotの第2凡例が必要
chart1_data = read.csv(data_file, as.is=T)
chart1_means = read.csv(means_file, as.is=T)
p = ggplot(data=chart1_data, aes(x=entity, y=usage, fill=medicine)) +
geom_bar(stat="identity", position=position_dodge()) +
geom_hline(data=chart1_means, aes(yintercept=value), show.legend=FALSE)
これは平均値を表すバーの両端の黒い水平線とグループ化垂直バーのグラフを描画し、垂直バーの色分けを示す凡例を有しています。
表示水平ライン(geom_hline)色(Rが持つ色のデフォルトセット、chart1_meansテーブル内の行の様々な番号にマップ:
は、私は物事のカップルをしたいです)
これらの線の色を示し、テキストラベルであるchart1_meansファイルの列1の値にマッピングする2番目の凡例を示します。明確にするために
chart1_means CSVファイルには、次のようになります。私はこれで失敗しGoogleで検索している
year,medicine,entity,usage,units
2006,Codeine,Mexico,0.8,mg/capita
2006,Codeine,Cuba,NA,mg/capita
etc.
:
label,value
USA Codeine mean, 14.2
Canada Codeine mean, 12.7
etc.
そしてchart1_dataのCSVファイルには、次のようになります。似たようなことをする方法はたくさんあるようですが、私が見つけることができるものは全くありません。
UPDATE更新UPDATE
私は修正に近いが、まだ間違っているものを設計する際にbethanyPのアドバイスを取りました。コードは現在、次のようになります。
chart1_data = read.csv(data_file, as.is=T)
chart1_means = read.csv(means_file, as.is=T)
means_labels = chart1_means$label
colors = rainbow(length(means_labels))
p = ggplot(data=chart1_data, aes(x=entity, y=usage, fill=medicine)) +
geom_bar(stat="identity", position=position_dodge(), show.legend=TRUE) +
geom_hline(data=chart1_means, aes(yintercept=value), color=colors) +
scale_fill_manual("means", values=colors, guide=guide_legend(override.aes = list(colors)))
結果は、色付きの棒(良い)が、それでも一つだけの伝説を重ねるラインを着色されています。凡例は "手段"(行指向のデータ)のタイトルを持っていますが、 "医薬品"(バー指向のデータ)の色とラベルを示しています。
私は私が代わりにこれを行うことができるかもしれないと思った:
scale_fill_manual("means", values=colors, labels=means_labels)
が、これはタイトルの「手段」、バーに関連付けられた色、そして "のサブセットであるラベルを持つ単一の伝説を埋めmeans_labels "(平均線よりも棒が少ないため)。
私はずいぶん歩いています。 2つの異なるデータ系列から2つの伝説が必要です。その他の提案はありますか?
自分のコードを現在のフォームに更新しました。 – Barry