在这里寻找一些gglot帮助,以获取非标准的绘图类型。这是一个示例图的代码,但是最终产品将有数十个这样的代码。
library(ggplot2)
library(data.table)
SOURCE <- c('SOURCE.1','SOURCE.1','SOURCE.2','SOURCE.2')
USAGE <- rep(c('USAGE.1','USAGE.2'),2)
RATIO <- c(0.95,0.05,0.75,0.25)
x <- data.table(SOURCE,USAGE,RATIO)
ggplot(x, aes(x=SOURCE,y=RATIO,group=USAGE)) +
geom_point() +
geom_line() +
geom_label(aes(label=USAGE))
这将根据需要生成包含两条线的图形。但是标签geom将文本添加到端点。我们想要的是标记该行的文本(每行出现一次,中间出现)。端点将始终具有相同的标签,因此只会造成冗余和混乱(每个图将具有不同的标签)。请参阅附件文件,该文件是在绘画程序中模拟的(忽略字体和大小):
我知道我们可以使用geom_line(aes(linetype=USAGE))
,但是由于所需的图表数量巨大,并且每个图表都非常小,因为绝大多数图表将只有两行且最多,因此我们不希望使用图例极端情况下只有四个。
(故意避免使用堆积的条形物。)
答案 0 :(得分:0)
您可以使用annotate
实现此目的,并可以通过更改x和y值来移动标签。
library(ggplot2)
#library(data.table)
SOURCE<-c('SOURCE.1','SOURCE.1','SOURCE.2','SOURCE.2')
USAGE<-rep(c('USAGE.1','USAGE.2'),2)
RATIO<-c(0.95,0.05,0.75,0.25)
#x<-data.table(SOURCE,USAGE,RATIO)
df <- data.frame(SOURCE, USAGE, RATIO)
ggplot(df, aes(x=SOURCE,y=RATIO,group=USAGE)) +
geom_point() +
geom_line() +
#geom_label(aes(label=USAGE))+
annotate('text', x=1.5, y=1, label = USAGE[1])+
annotate('text', x=1.5, y=0.25, label = USAGE[2])