我试图从一个小数据框生成一个饼图.起初一切都运作良好
library(ggplot2)
library(data.table)
c1 <- c(2,3)
c2 <- c("second","third")
c2 <- factor(c2, levels = c("first","second","third","fourth"))
c3 <- c(0.7,0.3)
cs <- data.frame(c1,c2,c3)
ct <- data.table(cs)
colx <- c("blue","red")
midpoint <- cumsum(ct$c3) - ct$c3/2
keycols = c("c1")
setkeyv(ct,keycols)
ct
c1 c2 c3
1: 2 second 0.7
2: 3 third 0.3
vysg <- ggplot(ct, aes(x=1,y=c3,fill=c2)) +
geom_bar(stat="identity",width=2) +
coord_polar(theta='y')+
theme(axis.ticks=element_blank(), axis.title=element_blank(),
axis.text.y = element_blank(), panel.grid = element_blank(),
axis.text.x = element_text(color=colx,size=15,hjust=0))+
scale_y_continuous(breaks = midpoint, labels = ct$c2) +
scale_fill_manual(values=colx) +
scale_x_continuous(limits=c(-1,2.5))
vysg
Run Code Online (Sandbox Code Playgroud)
当我需要向数据帧(data.table)添加新行时,问题就开始了(第一个和第四个的结果为零)
ctlab …Run Code Online (Sandbox Code Playgroud) 是否可以在ggplot2中用自定义文本替换图例?我知道注释,但我不想写入图表,而是在它旁边(或在它下面) - 确切地说是一个传说,并以一种相当简单的方式进行.
例如在这个简单的图表中
library(data.table)
library(ggplot2)
library(ggrepel)
id <- c(1:10)
x1 <- sample(1:10, 10, replace=T)
x2 <- sample(1:10, 10, replace=T)
x3 <- sprintf("Point.%d",id)
df<-data.frame(id,x1,x2,x3)
dt<-data.table(df)
setkeyv(dt,c("id"))
p<-ggplot(data=dt,aes(x1,x2))+geom_point()+geom_text_repel(aes(label=x3))+
ggtitle("Graph")+xlab("X")+ylab("Y")+theme_bw()
p
Run Code Online (Sandbox Code Playgroud)
我想写一些关于旁边图表的(简短的).我担心这在ggplot2中可能不容易实现,因为它超出了它的目的 - 但对我帮助很大.