我是一个相对新手到R,我正在编写代码使用ggplot2从一些漂亮的基本数据创建图表。我的绘图代码目前看起来是这样的:在ggplot需要第二个传说geom_hline的
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的值,这是文本标签。
为了清楚起见,chart1_means CSV文件看起来像这样:
label,value
USA Codeine mean, 14.2
Canada Codeine mean, 12.7
etc.
而且chart1_data CSV文件看起来像这样:
year,medicine,entity,usage,units
2006,Codeine,Mexico,0.8,mg/capita
2006,Codeine,Cuba,NA,mg/capita
etc.
我有这个失败谷歌搜索。似乎有很多方法可以做类似的事情,但没有我能找到的,这是非常适用的。
更新的版本?
我设计的东西是更接近正确的,但还是错了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“(因为条数线比条数线少)。
我几乎陷入僵局。仍然需要来自两个不同数据系列的两个传说。还有其他建议吗?
我已经更新了我的代码到它的当前窗体。 – Barry