gpt4 book ai didi

r - 如何合并颜色和形状?

转载 作者:行者123 更新时间:2023-12-03 21:48:50 25 4
gpt4 key购买 nike

当我有一个超过 6 个值的变量时,我的麻烦就开始了,因为这是 ggplot2 中 scale_shape 函数的当前最大值。

由于这个问题,我尝试使用另一个变量来解决这个问题,我只是将原始变量的长度包裹起来。

这是我的示例代码:

dataf <- structure(list(Municipality = structure(c(2L, 4L, 10L, 11L, 6L, 8L, 3L, 1L, 5L, 9L, 7L), .Label = c("Boyuibe", "Cabezas", "Camiri", "Charagua", "Cuevo", "Gutierrez", "Huacaya", "Lagunillas", "Machareti", "Vallegrande", "Villa Vaca Guzman"), class = "factor"), Growth = c(3.05, 2.85, 0.14, 1.21, 1.59, 2.35, -0.41, 0.81, 0.9, 2.89, 1.8), Density = c(3.0390920594, 0.260984024187, 5.20069847261, 2.50828556783, 3.43964629267, 3.69768961375, 32.4496626479, 2.06145019368, 4.2139578988, 0.740736713557, 1.67034079825)), .Names = c("Municipality", "Growth", "Density"), class = "data.frame", row.names = c(NA, -11L))

dataf <- dataf[with(dataf, order(Municipality)), ]
# create a new column with values 1 to 6 and same length as Municipality
modulus <- function(x) (x - 1) %% 6 + 1
indeces <- 1:length(dataf$Municipality)
dim(indeces) <- length(dataf$Municipality)
dataf$Shape <- apply(indeces, 1, modulus)
dataf$Shape <- factor(dataf$Shape, levels=unique(dataf$Shape))
plot1 <- ggplot(dataf, aes(x=Density, y=Growth, colour=Municipality,
shape=Shape))
plot1 <- plot1 + geom_point(size=3)
plot1 <- plot1 + scale_x_continuous(expression(paste(
"Population Density [people per km"^2, "]", sep="")))
plot1 <- plot1 + scale_y_continuous("Growth Rate [ratio population 2001 /
population 1992]")
plot1 <- plot1 + scale_colour("Municipality")
plot1

产生以下输出:
enter image description here

我希望传说就像情节中的点一样。这是可能的,还是有一个聪明的解决方案可以解决我的第一个问题,即市政列表太长?

提前致谢。

最佳答案

这是一个例子:

plot1 <- ggplot(dataf, aes(x=Density, y=Growth, colour=Municipality,
shape=Municipality))
plot1 <- plot1 + geom_point(size=3)
plot1 <- plot1 + scale_colour_discrete() +
scale_shape_manual(values=as.numeric(dataf$Shape))
plot1

如果您需要填充形状,请替换为
scale_shape_manual(values=c(16, 17, 15, 3, 7, 8)[as.numeric(dataf$Shape)])

技巧是:
  • 对颜色和形状使用相同的变量 aes(市政)
  • 使用 scale_shape_manual 并绘制中断点(此处为市政当局)和值(此处为 dataf$Shape)的映射
  • 对于 scale_shape_manual 的值,您需要数字变量而不是因子
  • 关于r - 如何合并颜色和形状?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5435883/

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