我正在制作AESRD 2013 - SCO Bitumen - 7y.csv
in this folder的ggplot2线图。该文件根据我的意愿在网站上自动创建。这些是显示一些生产值的几个时间序列,每个生产值根据“编译”列命名。所以我根据“编译”分组。
在同一文件夹中可用的文件plotter.r
中查看我的代码摘录(见上文)。
# "dt" is the dataframe derived from the csv file.
# "thinned" is some vector of x-values that tells where to draw the special symbols.
p = ggplot(dt, aes(Date, Value, colour= Compilation, group = Compilation, size = plotParameter), guide=FALSE)
p = p + geom_point(data=dt[thinned,],aes(as.Date(Date), Value, colour= Compilation, shape = Compilation), size = 5)
p = p + scale_shape_manual(values = seq(0,20))
p = p + geom_line(guide = FALSE)
p = p + scale_colour_manual(values=cbPalette) #cbPalette is already defined
p = p + scale_size(range=c(0.5, 2), guide=FALSE)
p = p + scale_y_continuous(labels = comma)
p = p + ylab("Barrels per day") + xlab("")
p = p + theme(legend.text = element_text(size = 8, hjust = 5, vjust= -5))
plot(p)
这是令人讨厌的事情:传奇重新排序我的编辑 按字母顺序 !
我故意设计了我的csv文件,以便每个编译以特定的逻辑顺序显示(首先是最重要的系列,然后是按照某些性能参数的顺序)。因此,图例的正确顺序只是根据unique(dt$Compilation)
。
到目前为止,我的步骤是将列Order
引入csv文件并进行实验(不成功),并以各种方式更改我的代码。没有成功。
当然,我已经用Google搜索并检查了Stackoverflow上的大多数可用线程。我遇到了因子分解和重新排序,但除了它们出现在数据集中的顺序之外,我的编辑没有“逻辑”顺序。 *叹*
有人能指点 来插入 吗?
(加分点:如何摆脱符号图例中的水平线?)
答案 0 :(得分:6)
在两个比例(breaks
和scale_color_manual
)中应用scale_shape_manual
。如果我们只做一个,它们就不匹配了,ggplot会把它们分成两个传说,而不是合并它们
一个这样的例子是:
> library(ggplot2)
> ggplot(mtcars, aes(wt, mpg, shape=factor(cyl))) + geom_point() + theme_bw()
> library(ggplot2)
> bp <- ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) + geom_boxplot()
> bp
bp + scale_fill_discrete(breaks=c("trt1","ctrl","trt2"))
要反转
bp + scale_fill_discrete(breaks = rev(levels(PlantGrowth$group)))
也试试
bp + scale_fill_discrete(breaks = unique(levels(PlantGrowth$group)))
答案 1 :(得分:3)
要解决排序问题:您可能希望在绘图前通过调用dt$Compilation
来确定dt <- transform(dt, Compilation=factor(Compilation, levels=unique(Compilation)))
的因子级别。
说到水平线:你想要p = p + guides(size=FALSE)
吗?