gpt4 book ai didi

r - 在 R 中的图中添加第二个图例

转载 作者:行者123 更新时间:2023-12-04 15:59:31 25 4
gpt4 key购买 nike

我得到了基于列因子的默认图例。我根据另一列的因子为 x 轴着色。

我也可以为此 x 轴颜色添加图例吗?

enter image description here

合并数据( https://dl.dropbox.com/u/81597211/Untitled.pdf )

row.names   LCA_CASE_WORKLOC1_CITY  LCA_CASE_JOB_TITLE  LCA_CASE_WORKLOC1_STATE LCA_CASE_WAGE_RATE_FROM Company
4726 REDWOOD SHORES SOFTWARE DEVELOPER - ARCHITECT CA 263500.00 ORACLE
102663 DENVER SOFTWARE ENGINEER (SOFTWARE DEVELOPER 5) CO 170000.00 ORACLE
103621 DENVER SOFTWARE ENGINEER (SOFTWARE DEVELOPER 5) CO 170000.00 ORACLE
95210 SANTA CLARA SOFTWARE ENGINEER (SOFTWARE DEVELOPER 4) CA 155000.00 ORACLE
18858 SANTA CLARA SOFTWARE ENGINEER (CONSULTING SOLUTION DIRECTOR) CA 150000.00 ORACLE
19514 IRVING CONSULTING TECHNICAL MANAGER TX 150000.00 ORACLE
57054 REDWOOD SHORES SOFTWARE ENGINEER (SOFTWARE DEVELOPER 4) CA 150000.00 ORACLE
76335 REDWOOD SHORES SOFTWARE ENGINEER (APPLICATIONS DEVELOPER 4) CA 150000.00 ORACLE
79964 REDWOOD SHORES SOFTWARE ENGINEER (SOFTWARE DEVELOPER 5) CA 150000.00 ORACLE

代码
library("ggplot2")
colour = factor(merged$Company)
xcolor = factor(merged$LCA_CASE_WORKLOC1_STATE)
qplot(merged[[2]], merged[[4]], colour = colour, xlab="Positions", ylab ="Salary", main="H1B Salary 2012") + theme(axis.text.x=element_text(angle=90,vjust=0.5, hjust=1, size=10, color= xcolor, lineheight=10)) + scale_y_continuous(breaks=seq(0,300000, 10000)) + theme(panel.grid.minor = element_line(colour = "red", linetype = "dotted")) + scale_x_discrete(merged[[2]])

最佳答案

这个解决方案不像我们想要的那样通用,但也不是很困难和技术性。先来一些数据:

y <- c(5, 2, 3, 2)
x <- factor(c("A", "B", "C", "A"))
z <- factor(c("D", "E", "F", "E"))

p <- qplot(x, y, geom = "point") +
theme(axis.text.x = element_text(color = z))

热门功能 g_legend (可以找到例如 here )在这种情况下很有用,它将绘图中的图例作为grob(因此该解决方案并不快)。
g_legend<-function(a.gplot){
tmp <- ggplot_gtable(ggplot_build(a.gplot))
leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
legend <- tmp$grobs[[leg]]
legend
}

因此,我们保存了两个图例,一个用于点 ( x ),另一个用于 x 轴 ( z )。
legends <- list(g_legend(p + geom_point(aes(color = x))),
g_legend(p + geom_point(aes(color = z)) +
scale_color_manual(values = palette()[as.numeric(z)])))

请注意第二个图例的不同之处。 palette()在这里使用是因为如果例如 z <- factor(c(1, 2, 3))然后 element_text(color = z)使用与 geom_point(aes(color = z)) 不同的颜色,即 element_text(color = z)从基本图中获取颜色,例如2 中 plot(1, col = 2) .

最后,把所有东西放在一起:
library(gridExtra)
grid.arrange(p + geom_point(aes(color = x)) + guides(color = 'none'),
do.call(arrangeGrob, legends), nrow = 1, widths = c(0.8, 0.2))

enter image description here

关于r - 在 R 中的图中添加第二个图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15316267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com