ggplot2 - 特定因子样式

时间:2014-08-18 15:06:26

标签: r graph graphics ggplot2 dataframe

这似乎是一个非常简单的问题,所以如果我在这里重复一个人,我很抱歉。到目前为止还没有找到答案!

我有一个类似于:

的数据框
country <- c("Denmark", "Denmark", "Ireland", "Ireland", "UK", "UK")
year <- c(2007, 2008, 2007, 2008, 2007, 2008)
share <- c(0.5, 0.52, 0.6, 0.72, 0.3, 0.2)
oecd <- data.frame(country, year, share)

(虽然更大)但我有一个用ggplot2制作的图表:

q <- ggplot(data=subset(oecd, year >2003 & year < 2013),
            aes(year, share, colour = country)) +
geom_line() +
scale_y_continuous(labels = percent) +
ylab("Share of Total Revenue")

这很好但我希望能够按因子操纵图形(例如,使爱尔兰线更大,更厚,不同的虚线,绿色等)。我试过这个:

alpha <- ggplot(data=subset(oecd, year >2003 & year < 2013), aes(x=year)) +
  geom_line(aes(y = share), data = subset(oecd, country == "Ireland"), size = 3) +
  geom_line(aes(y = share), data = subset(oecd, country != "Ireland"), size = 1.5)

适用于爱尔兰线,但不适用于其他线。在我的真实数据集中,我有12个因素,所以显然不希望将每个国家分配,有没有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

尝试这样的事情。如果您想要更改依赖于country的线型,颜色和尺寸,那么在调用ggplot时最简单的方法就是这一点。将自动生成不同的线型,颜色和尺寸。可以使用手动刻度选择特定的线型,尺寸等。

ggplot(data=subset(oecd, year >2003 & year < 2013),
  aes(year, share, colour=country, linetype=country, size=country)) +
  geom_line() +
  scale_y_continuous(labels=percent) +
  scale_size_manual(values=c(2,4,2)) +
  scale_linetype_manual(values=c(1,2,1)) +
  ylab("Share of Total Revenue")

此处指定了尺寸和线型的手动缩放。因子country具有丹麦,爱尔兰和英国的水平(按此顺序)。所以向量c(2,4,2)为爱尔兰分配了一条较粗的线。同样,线型的手动刻度线指向丹麦和英国的连续线,以及爱尔兰的虚线(2)。

希望这会有所帮助。干杯!