我正在尝试用3个彩色矩形上的线创建一个ggplot。我想在数据库中插入每个矩形的正确填充颜色。 发生该列被视为一个因子,并自动设置填充颜色。 这是我的尝试:
library(ggplot2)
R<-rgb(185, 0, 51,alpha=1, maxColorValue=255)
Y<-rgb(255, 255, 255,maxColorValue=255)
G<-rgb(150, 191, 37,alpha=3,maxColorValue=255)
R<-rgb(185, 0, 51,alpha=1, maxColorValue=255)
sim<-seq(from=5000,to=14000,length.out=100)
ut<-c(673,685,697,709,721,733,745,758,770,782,794,806,818,830,842,855,867,879,891,903,915,927,940,952,964,976,988,1000,1012,1025,1037,963,975,986,997,1008,1019,1030,1042,1053,1064,1075,1086,1097,1108,1120,1131,1142,1153,1164,1175,1186,1198,1209,1220,1231,1242,1253,1265,1276,1287,1298,1309,1320,1331,1176,1186,1195,1205,1215,1225,1235,1244,1254,1264,1274,1283,1293,1303,1313,1322,1332,1342,1352,1362,1371,1381,1391,1401,1410,1420,1430,1440,1449,1223,1231,1239,1247,1256,1264)
fasce<-data.frame(xmin=c(sim[1],7566,10517,13127),xmax=c(7566,10517,13127,13598),ymin=ut[1]*0.9,ymax=Inf,color=c(R,Y,G,R),stringsAsFactors =F)
data<-(data.frame(sim,ut))
ggplot() +geom_rect(data=fasce,aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax,fill=color))+
geom_line(data=data, aes(x = sim, y = ut))+geom_hline(y=ut[1],xmin=sim[1])
我也有问题正确显示hline
:我想从ut[1]
答案 0 :(得分:2)
您需要使用scale_fill_identity
来使用您提供的实际颜色名称。我从alpha
中删除了rgb
以获取颜色名称,因为这使事情变得复杂。如果要更改透明度,可以直接在ggplot2中进行。
要添加在图表中特定点开始或结束的水平线,我使用geom_segment
代替geom_hline
。
我使用并放入数据集fasce
的颜色。
R = rgb(185, 0, 51, maxColorValue=255)
Y = rgb(255, 255, 255, maxColorValue=255)
G = rgb(150, 191, 37, maxColorValue=255)
ggplot() +
geom_rect(data=fasce, aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax, fill=color)) +
geom_line(data=data, aes(x = sim, y = ut)) +
scale_fill_identity() +
geom_segment(aes(x = min(sim), xend = Inf, y = ut[1], yend = ut[1]))
默认情况下,scale_fill_identity
函数不会放置任何图例。如果你想要传奇,你可以使用scale_fill_identity(guide = "legend", breaks = fasce$color)
留下的东西。