【问题标题】:How to create a legend title in a ggplot2 line graph如何在 ggplot2 折线图中创建图例标题
【发布时间】:2020-04-03 15:06:20
【问题描述】:

我正在使用 R 中的 ggplot2 包创建折线图。

我无法上传数据,因为我正在为我最后一年的项目进行研究。所以,我只能和你分享代码。

这是 APA 格式图的代码。

ggplot(accuracy_data, 
       aes(x = eccentricity, y = accuracy, group= speech_task)) + 
  geom_line(aes(linetype=speech_task)) + 
  scale_linetype_manual(values=c("twodash", "dotted", "solid")) + 
  geom_point(aes(shape = speech_task)) +
  facet_grid(. ~ duration, labeller=labeller(duration = labels)) +
  labs(x='Eccentricity (degrees of visual angle)', y='Accuracy of responses') +
  theme_apa() +
  theme(text=element_text(family='Times')) +
  scale_x_continuous(breaks =c(5, 10, 15)) +
  geom_errorbar(aes(ymin = accuracy - acc_sum$se , ymax = accuracy + acc_sum$se ), width=.1)

这会生成一个没有标题的图例,因此我请求帮助为图例创建标题。 我尝试了很多不同的选择,但没有一个有效。我什至没有收到错误消息。 这些是我到目前为止尝试过的代码:

legend_title <- "Speech Task"
scale_fill_manual(legend_title,values=c("Conversation", "N-Back", "Silence"))
guides(fill=guide_legend(title="Speech Task"))
scale_fill_discrete(name = "Speech Task",
                    labels = c("Conversation", "N-Back", "Silence"))
labs(fill="Speech Task")

我尝试的以下和最终代码是唯一在图表中产生变化的代码。但是因为我手动更改了点的形状和线型,所以导致制作了两个图例,并且只命名了线型图例。

labs(linetype= "Speech Task")

我可以帮忙吗:)

【问题讨论】:

  • 你的theme_apa来自哪个包?如果是jtools,请尝试jtools::theme_apa(legend.use.title = TRUE)
  • @stefan 我确实将那个包用于theme_apa()。所以,我只是尝试了一下,得到了这些错误:错误:无法将 ggproto 对象添加在一起。您是否忘记将此对象添加到 ggplot 对象中?
  • 我猜这是一个不同的问题。由于您没有提供任何数据,我检查了 mtcars 并添加了 legend.use.title = TRUE 为我工作并添加了图例标题。但是,我在最后一行中删除了 geom_errobar 以及 facet_grid 中的标签器。
  • @stefan 不幸的是,我必须包含错误栏,因为它需要采用 APA 格式。此外,我花了很长时间才正确标记小平面网格,所以也需要那个位。抱歉,我没有分享数据,我认为这违反了道德准则。
  • 并不意味着您必须放弃错误栏和标签。 (: 只是为了检查并使示例更容易一些。也许您可以使用dput 提供数据集示例。

标签: r ggplot2 graph


【解决方案1】:

看不到任何数据或最终结果,我在这里有预感。

我怀疑您需要相同的命名形状和填充图例。所以类似于

scale_linetype_manual(name = legend_title, values = c("twodash", "dotted", "solid")) + 
scale_fill_manual(name = legend_title, values = c("Conversation", "N-Back", "Silence")) +

【讨论】:

  • 我尝试了代码,它只是分隔了图例,所以我只剩下两个,而且都没有标题。
  • @ewest29 你能制作一个我们可以玩的小型模拟数据集吗?
  • 我尝试创建一个,但是在尝试使用它进行练习时,它说我使用了离散数据而不是连续变量。它不认为这意味着要创建硬数据,语音任务有 3 个级别:对话、n-back 和沉默,怪癖有 3 个级别:近、中、远和持续时间有 3 个级别 50、150、250 . 这些都是随机的,但每个应该出现相同的次数。唯一变化且连续的位是精度,范围从 0 到 1。
猜你喜欢
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
  • 2020-11-09
  • 2016-08-05
  • 2018-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多