2017-02-06 143 views
0

编辑:由Haboryme在评论中解决;问题是我使用xlab和ylab代替x和y作为labs()的关键字参数的名称(解释图形标签),并且在第二次调用aes()时多余地使用了color =(解释持久性原始图例)。在R/ggplot2中修改堆叠面积图的图例和标签

我想用R和ggplot2从一些CSV数据制作堆积区域图。例如:

In file "test.csv": 
Year,Column with long name 1,Column with long name 2 
2000,1,1 
2001,1,1.5 
2002,1.5,2 

我运行这段代码(模仿答案this GIS.SE question):

library(ggplot2) 
library(reshape) 
df <- read.csv('test.csv') 
df <- melt(df, id="Year") 
png(filename="test.png") 
gg <- ggplot(df,aes(x=as.numeric(Year),y=value)) + 
    # Add a new legend 
    scale_fill_discrete(name="Series", labels=c("Foo bar", "Baz quux")) + 
    geom_area(aes(colour=variable,fill=variable)) + 
    # Change the axis labels and add a title 
    labs(title="Test",xlab="Year",ylab="Values") 
print(gg) 
dev.off() 

结果,在文件 “test.png”:

Stacked-area plot with wrong axis labels and extra legend

问题:我试图更改轴标签被忽略,我的新传说(代码借用从R Cookbook's suggestions)被添加到,而不是替代(奇怪地重新着色)默认的一个。 (R Cookbook提供的其他解决方案,比如调用指南(fill = FALSE),或多或少都是相同的。)我宁可不使用编辑数据框的解决方法(例如,剥离read.csv( )替换列标题中的空格),以便默认标签变为正确。我该怎么办?

+1

改为使用'+ labs(title =“Test”,x =“Year”,y =“Values”)',然后在aes()中放置颜色,它不会给图表带来任何东西。 – Haboryme

+0

@Haboryme这工作完美!辉煌!如果您将其作为自己的答案发布,我会将其标记为已接受。 –

回答

2
ggplot(df,aes(x=as.numeric(Year),y=value)) + 
    scale_fill_discrete(name="Series", labels=c("Foo bar", "Baz quux")) + 
    geom_area(aes(fill=variable)) + 
    labs(title="Test",x="Year",y="Values") 

geom_area()只有颜色的轮廓,因此aes()的参数colour没有的情节在这里添加任何东西。