【发布时间】:2012-07-27 17:04:44
【问题描述】:
我是 ggplot 的新手,所以请耐心等待。我正在绘制 35 个小区域的增长预测,即使使用出色的 directlabels 库,这对于一个地块来说也是一个不健康的数字。但是我需要所有系列进行初步筛选。
挑战在于使其具有可读性。我找到了@Ben Bolker 使用large numbers of distinct colors 的修复程序,但在更改线型时遇到了麻烦。 35 个系列不需要是唯一的,但我想使用 12 种不同的类型来使单个系列更易于阅读。
我的计划是创建一个包含 12 种可能类型的 35 个元素的随机列表,并将其作为 linetype 参数传递,但我无法让它工作,并出现错误:
Error: Aesthetics must either be length one, or the same length as the dataProblems:lty
线型列表中有 35 个值。当然,我希望类型、颜色等都反映在图例中。
融化的数据是这样的; 35 个系列中每个系列的 9 年观察结果:
> simulation_long_index[16:24,]
year geography value
16 2018 sfr_2 101.1871
17 2019 sfr_2 101.1678
18 2020 sfr_2 101.2044
19 2012 sfr_3 100.0000
20 2013 sfr_3 100.1038
21 2014 sfr_3 100.2561
22 2015 sfr_3 100.0631
23 2016 sfr_3 100.8071
24 2017 sfr_3 101.2405
到目前为止,这是我的代码:
lty <- data.frame(lty=letters[1:12][sample(1:12, 35,replace=T)])
g3<-ggplot(data=simulation_long_index,
aes(
x=as.factor(year),
y=value,
colour=geography,
group=geography,
linetype=lty$lty))+
geom_line(size=.65) +
scale_colour_manual(values=manyColors(35)) +
geom_point(size=2.5) +
opts(title="growth")+
xlab("Year") +
ylab(paste("Indexed Value (Rel. to 2012")) +
opts(axis.text.x=theme_text(angle=90, hjust=0))
print(g3)
添加
scale_linetype_manual("",values=lty$lty) +
在 scale_color_manual 而不是 linetype 参数生成图表之后,但线条都是相同的。那么,如何让线条因大系列计数而有所不同?
【问题讨论】:
-
lty必须是原始数据框中的一列。 (作为一般说明,如果您在aes中使用美元符号,则说明您做错了。)