我使用ggplot创建气泡图。使用以下代码:
ggplot(df, aes(x = order, y = mean, size = n, fill = name)) +
geom_point(shape = 21) +
theme_bw() +
theme() +
scale_size(range = c(1, 50)) +
ylim(0,100)
除了两个方面,它都可以正常工作:
我已经尝试过分别使用scale_color_manual()和scale_y_continuous的几种方法,但我无济于事!任何帮助将不胜感激!
谢谢
答案 0 :(得分:0)
由于您尚未指定示例df
,因此我创建了自己的示例。
要手动指定颜色,必须使用带有命名矢量的scale_fill_manual
作为values
的参数。
编辑2
这似乎可以满足您的要求。我们使用scale_y_continuous
。 breaks
参数指定位置的向量,而labels
参数指定应该出现在这些位置的标签。由于创建数据帧时已经创建了矢量,因此我们只需将这些矢量作为参数传递即可。
ggplot(df, aes(x = order, y = mean, size = n, fill = name)) +
geom_point(shape = 21) +
scale_fill_manual(values = gcolors) +
scale_size(limits = c(min(df$n), max(df$n))) +
scale_y_continuous(breaks = mean, labels = order_label)
编辑1
从您的评论看来,您想标记圆圈。一种选择是使用geom_text
。下面的代码。您可能需要尝试使用nudge_y
的值来获得正确的位置。
order <- c(1, 2)
mean <- c(0.75, 0.3)
n <- c(180, 200)
name <- c("a", "b")
order_label <- c("New York", "London")
df <- data.frame(order, mean, n, name, order_label, stringsAsFactors = FALSE)
color <- c("blue", "red")
name_color <- data.frame(name, color, stringsAsFactors = FALSE)
gcolors <- name_color[, 2]
names(gcolors) <- name_color[, 1]
ggplot(df, aes(x = order, y = mean, size = n, fill = name)) +
geom_point(shape = 21) +
geom_text(aes(label = order_label), size = 3, hjust = "inward",
nudge_y = 0.03) +
scale_fill_manual(values = gcolors) +
scale_size(limits = c(min(df$n), max(df$n))) +
theme(axis.text.y = element_blank(),
axis.ticks.y = element_blank()) +
ylab(NULL)
原始答案
“用y上的数字替换文本标签”的含义不清楚。在下面的示例中,我已经使用scales::percent_format()
函数将y轴格式化为百分比。这跟你想要的相似吗?
order <- c(1, 2)
mean <- c(0.75, 0.3)
n <- c(180, 200)
name <- c("a", "b")
df <- data.frame(order, mean, n, name, stringsAsFactors = FALSE)
color <- c("blue", "red")
name_color <- data.frame(name, color, stringsAsFactors = FALSE)
gcolors <- name_color[, 2]
names(gcolors) <- name_color[, 1]
ggplot(df, aes(x = order, y = mean, size = n, fill = name)) +
geom_point(shape = 21) +
scale_fill_manual(values = gcolors) +
scale_size(limits = c(min(df$n), max(df$n))) +
scale_y_continuous(labels = scales::percent_format())
答案 1 :(得分:0)
感谢您的所有帮助,效果很好:
ggplot(df, aes(x = order, y = mean, size = n, fill = name)) +
geom_point(shape = 21) +
scale_fill_manual(values = gcolors) +
scale_size(limits = c(min(df$n), max(df$n))) +
scale_x_continuous(breaks = order, labels = order_label)