- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个数据集,我想合并成一个图,一个作为条形图(2 组),一个作为点线图(1 组)。我已经设法合并这些图并显示条形图的图例,但每当我尝试显示点/线的图例时,它都不起作用。
这是我的数据集的摘录(已翻译):
bargroup <- data.frame('Year' = as.numeric(rep(2001:2004, each = 2)),
'Group' = as.factor(rep(c('State', 'Country'), 4)),
'Share' = as.numeric(c(0.42, 0.41, 0.4, 0.4, 0.42, 0.4, 0.42, 0.38)))
plgroup <- data.frame('Year' = as.numeric(2001:2004),
'Group' = as.factor(rep('State', 4)),
'Value' = as.numeric(c(4.95, 5.31, 5.29, 4.96)))
这是我当前的代码:
ggplot() +
geom_bar(data = bargroup, aes(x = Year, y = Share, fill = Group, group = Group),
stat = 'identity', position = position_dodge2(preserve = 'single')) +
geom_point(data = plgroup, aes(y = Value*0.1, x = Year), size = 4, color = '#875DA3') +
geom_line(data = plgroup, aes(y = Value*0.1, x = Year), size = 1, color = '#875DA3') +
labs(x = 'Year') +
scale_y_continuous(name = 'Share groups', labels = scales::percent,
sec.axis = sec_axis(~.*10, name = 'Cost')) +
scale_fill_manual(labels = c('Share State', 'Share Country'),
values = c('#659B7A', '#8CD7F0')) +
scale_color_manual(labels = c('Total Cost'),
values = c('#875DA3')) +
theme_minimal() +
theme(legend.title = element_blank(),
legend.position = 'bottom',
plot.title = element_blank(),
panel.grid.minor = element_blank(),
axis.title.x = element_text(size = 18),
axis.title.y = element_text(size = 18),
axis.text = element_text(size = 16),
legend.text = element_text(size = 18)) +
guides(fill = guide_legend(nrow = 2, byrow = T))
dev.off()
这是我得到的图表:
如您所见,点/线组未显示在图例中。然后我尝试删除参数 scale_color_manual() 并像这样调整 geom_point() 和 geom_line() 参数:
geom_point(data = plgroup, aes(y = Value*0.1, x = Year, color = Group),
size = 4, color = '#875DA3', show.legend = T)
geom_line(data = plgroup, aes(y = Value*0.1, x = Year, color = Group),
size = 1, color = '#875DA3', show.legend = T)
我从中得到的图表是:
当我使用 melt() 函数组合两个数据集时,我得到了相同的图表。
我也试过只把它分成 3 个组,而不显示点/线组。这显示了所有 3 个组,但不幸的是,点/线组现在 - 显然 - 标有正方形而不是其点/线符号(在图例中)。
有人知道如何调整我的代码以将点/线组显示为其他两组旁边或下方的单个项目符号点吗?最好还可以选择标签名称(“总成本”)。
提前致谢!
最佳答案
经验法则:aes()
中的所有内容都会产生图例。因此,将 size
从 aes()
AND color
放入 aes()
中:
ggplot() +
geom_bar(data = bargroup, aes(x = Year, y = Share, fill = Group, group = Group),
stat = 'identity', position = position_dodge2(preserve = 'single')) +
geom_point(data = plgroup, aes(y = Value*0.1, x = Year, color = '#875DA3'),size = 4) +
geom_line(data = plgroup, aes(y = Value*0.1, x = Year, color = '#875DA3'),size = 1) +
labs(x = 'Year') +
scale_y_continuous(name = 'Share groups', labels = scales::percent,
sec.axis = sec_axis(~.*10, name = 'Cost')) +
scale_fill_manual(labels = c('Share State', 'Share Country'),
values = c('#659B7A', '#8CD7F0')) +
scale_color_manual(labels = c('Total Cost'),
values = c('#875DA3')) +
theme_minimal() +
theme(legend.title = element_blank(),
legend.position = 'bottom',
plot.title = element_blank(),
panel.grid.minor = element_blank(),
axis.title.x = element_text(size = 18),
axis.title.y = element_text(size = 18),
axis.text = element_text(size = 16),
legend.text = element_text(size = 18)) +
guides(fill = guide_legend(nrow = 2, byrow = T))
改变图例的顺序:
guides(fill = guide_legend(nrow = 2, byrow = T, order=1))
关于r - 如何显示多层图例(geom_point 和 geom_bar)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72163827/
我正在尝试使用 ggplot 创建带有类别标签的水平条形图。 我已经能够毫不费力地创建绘图,并且可以贴上标签,但是我遇到了格式问题。最终,如果合适,我希望我的标签在栏内,否则就在栏外而不截断标签。 以
我有一些数据可以捕获多个时间段内两个不同组的百分比。 df % filter(key=="You"), aes(x=period, y=value, color=)) + geom_bar(sta
我有下图,它本质上是两个分布的直方图,它们并排绘制: my.barplot <- function( df, title="", ... ) { df.count <- aggregate( df
我正在寻找一种方法来移除添加到 geom_bar 中的非重叠底部边框。我不想使用像 geom_hline(yintercept = 0, color = "white") 这样的选项,因为它覆盖了原始
我不确定是否geom_bar能够(可能我不能)用 geom_bar 创建我需要的图.我想要一个条形图,但不是从 0 开始,我有一个最小值和最大值作为每个条形的起点和终点。所需的输出如下所示: 数据结构
我的目标是重现这个图,我的问题是重现每个条中的渐变填充。 评论后添加 @PavoDive 的好评将我们引导至 a question这基本上是说“你不能用 ggplot2 做到这一点,而且即使你能做到,
我想用不同的颜色突出显示中间的栏(名为 SSA)。我已经尝试了可用的示例,但没有得到想要的结果。 看来我无法正确使用 ifelse 元素。感谢您帮助检测错误。 “填充”不是我数据中的一个因素,这与此处
我正在使用 ggplot2 和 geom_bar() 来绘制一些统计数据。有没有办法自定义栏中的填充物以及每个栏的线条类型?我想强调两个关键特征:总共有五个条形图,它们代表的数字是从两种不同类型的输入
我正在尝试更改 ggplot 条形图的不透明度。考虑以下示例: df <- data.frame(period = rep(c("current", "past"), 3),
我想做什么 我目前为我的绘图设置了一个自定义主题,并且我希望在此之上为所有类型的绘图设置一些预定义的参数。我的第一个重点是条形图,我想在其中更改默认宽度。 ggplot2中geom_bar的默认宽度为
我正在尝试使用 geom_bar 绘制堆积条形图并在条形图中用其值标记每个类别。由于某些类别的值较小,因此条形图相应段的高度有时较小。所以,我正在尝试使用 geom_text 来调整标签的大小。 .
我希望能够创建一个条形图,该图还显示了每个组中条形的平均值。 AND 显示图例中的平均条。 我已经能够使用下面的代码获得这个图形条形图,这很好,但我希望能够看到图例中的平均线。 ##The data
我想使用条形图和 ggplot 可视化数据. 我有下面的数据,当我想查看这些数据时,负值的文本没有显示在 Bar 下方。 dat <- read.table(text = "sample Types
我有一个数据框排列如下: condition,treatment,value A , one , 2 A , one , 1 A , two
我的数据只包含一个变量和一个白天列。我想制作一个彩色的 geom_bar() 图。这意味着每个条形都有不同的颜色。 数据示例: daytime price 2000-01-01 30 2000-01-
我已经搜索和搜索,但我似乎无法找到一种优雅的方式来做到这一点! 我有一个数据集 Data由 Data$x 组成(日期)和 Data$y (数字从 0 到 1) 我想在条形图中绘制它们: ggplot(
我试图实现的是让条形按每个面板的给定变量排序。 一个简单的例子: library(ggplot2) library(plyr) df <- data.frame(fac = c
我尽力阅读与我的问题相关的问题。最相关的是:question .但是我无法弄清楚如何解决我的问题。我有一个像这样的数据集 structure(list(COMPANY = structure(1
我发现这非常棘手。我想创建一个趋势条形图,显示按日期提交的日期时间的计数。 一些数据: structure(list(id = c("p036502", "p039565", "p233823", "
我不明白为什么我不能改变这个 geom_bar 情节的填充美学 # Reprex dataset df % ggplot(aes(x = fct_rev(fct_infreq(modality))
我是一名优秀的程序员,十分优秀!