R 如何使用不同颜色的geom_step获得分段图

R 如何使用不同颜色的geom_step获得分段图,r,ggplot2,R,Ggplot2,我试图用不同的段颜色绘制一个阶梯图。我尝试了以下内容,但这只显示了最后一部分: library(ggplot2) mcgwh <- structure(list(Technology = c("FOS", "WOOD", "NUCL", "HYD", "HYDS","EWI", "WPV", "WPV"), MC = c(0.00909452733164008, 0.0216749226571617, 0.0473803148589957, 0.05619182757182, 0

我试图用不同的段颜色绘制一个阶梯图。我尝试了以下内容,但这只显示了最后一部分:

library(ggplot2)

mcgwh <- structure(list(Technology = c("FOS", "WOOD", "NUCL", "HYD", "HYDS","EWI", "WPV", "WPV"), MC = c(0.00909452733164008, 0.0216749226571617,     0.0473803148589957, 0.05619182757182, 0.070613003340574, 0.0854965730717766,     0.156860794757306, 0.156860794757306), Capacity = c(0, 1190.45103330156,     1419.2619999981, 27551.2619999981, 44237.2619999981, 65110.2619999981,     66943.2619999981, 67990.7380000019)), .Names = c("Technology", "MC", "Capacity"), class = "data.frame", row.names = c(NA, 8L))

ggplot(data = mcgwh, aes(x = Capacity) ) +  geom_step(aes(y = MC,colour = factor(Technology)))

我相信,在geom_步骤中,通过指定AESCOLOR=工厂技术,您无法轻松做到这一点。您有两种选择:

结合使用geom_步骤和geom_点,geom_点采用AESCOLOR=因子技术

ggplot(data = mcgwh, aes(x = Capacity, y = MC)) +  geom_step() + geom_point(aes(colour = Technology))
如果希望步进线采用技术颜色编码,则必须创建虚拟间隔条目,其中x=容量,y=MC点将从上一点水平连接,并垂直连接到下一点。您可以通过重复技术标签和MC y变量(每个变量从1:nrowmcgwh-1起2x)和容量x可变(每个变量从2:nrowmcgwh起2x)来实现

mcgwh2 <- cbind.data.frame(c(rep(mcgwh$Technology[1:(nrow(mcgwh)-1)], each=2), mcgwh$Technology[nrow(mcgwh)]), c(rep(mcgwh$MC[1:(nrow(mcgwh)-1)], each=2), mcgwh$MC[nrow(mcgwh)]), c(mcgwh$Capacity[1], rep(mcgwh$Capacity[2:nrow(mcgwh)], each=2)))
colnames(mcgwh2) <- c("Technology", "MC", "Capacity")
ggplot(data = mcgwh2) + geom_path(aes(x = Capacity, y = MC, colour = Technology, group=1))

我相信,在geom_步骤中,通过指定AESCOLOR=工厂技术,您无法轻松做到这一点。您有两种选择:

结合使用geom_步骤和geom_点,geom_点采用AESCOLOR=因子技术

ggplot(data = mcgwh, aes(x = Capacity, y = MC)) +  geom_step() + geom_point(aes(colour = Technology))
如果希望步进线采用技术颜色编码,则必须创建虚拟间隔条目,其中x=容量,y=MC点将从上一点水平连接,并垂直连接到下一点。您可以通过重复技术标签和MC y变量(每个变量从1:nrowmcgwh-1起2x)和容量x可变(每个变量从2:nrowmcgwh起2x)来实现

mcgwh2 <- cbind.data.frame(c(rep(mcgwh$Technology[1:(nrow(mcgwh)-1)], each=2), mcgwh$Technology[nrow(mcgwh)]), c(rep(mcgwh$MC[1:(nrow(mcgwh)-1)], each=2), mcgwh$MC[nrow(mcgwh)]), c(mcgwh$Capacity[1], rep(mcgwh$Capacity[2:nrow(mcgwh)], each=2)))
colnames(mcgwh2) <- c("Technology", "MC", "Capacity")
ggplot(data = mcgwh2) + geom_path(aes(x = Capacity, y = MC, colour = Technology, group=1))

您的意思是要用不同的颜色连接点,如ggplotdata=MCGH,aesx=Capacity+geom_Pathasey=MC,color=factorTechnology,group=1?如果您只是想从每个点直接获得直线路径,上述答案是有效的,如果您需要步骤,我在下面提供的答案。是和否。使用R.S.提供的解决方案,我可以执行以下操作,使垂直线为黑色,水平线为彩色。就你的例子而言,我无法管理:ggplotdata=mcgwh2+geom_pathasex=Capacity,y=MC,group=1+geom_pathasex=Capacity,y=MC,color=technology你的意思是要用不同的颜色连接点,比如ggplotdata=mcgwh,aesx=Capacity+geom_pathasey=MC,color=factorTechnology,group=1?如果您只想从每个点直接获得直线路径,则上述答案有效,如果您需要步骤,则我在下面提供的答案有效。是和否。通过R.S.的解决方案,我可以执行以下操作,并将垂直线设置为黑色,水平线设置为彩色。就你的例子而言,我无法做到:ggplotdata=mcgwh2+geom_pathaesx=Capacity,y=MC,group=1+geom_pathaesx=Capacity,y=MC,color=TechnologyTHanks!group=1的作用是什么,或者我在哪里可以找到关于它的文档?@user3270634 group=1表示连接所有点的一条线。如果您满意,请接受答案,以便标记。谢谢!group=1的作用是什么,或者我在哪里可以找到关于它的文档?@user3270634 group=1表示连接所有点的一条线。如果您满意,请接受答案,以便标记。