如何更改图例中的标签?

Posted

技术标签:

【中文标题】如何更改图例中的标签?【英文标题】:How can I change the labels in the legend? 【发布时间】:2019-10-22 00:58:56 【问题描述】:

我想将图例中的标签从 1、2、3、4 更改为特定标签,如“稳定低”、“治疗增加”、... 但它只是行不通。有什么想法吗?

我试过 scale_fill_manual,scale_colour_manual,改变 aes ...

# Create dataframe
timepoint=c("baseline", "baseline", "baseline", "baseline", 
        "nach briefing", "nach briefing", "nach briefing", "nach 
briefing",
        "session 4", "session 4", "session 4", "session 4")
expectation=c(9.661290, 14.57692, 12.41667, 14.35714, 10.20968, 14.30769, 
17.16667, 15.57143,  9.532258, 15.78846, 15.75000, 10.000000)
ci=c(0.436101, 0.79578, 1.41966, 1.23227, 0.51849, 0.91015, 0.97055, 
1.1511, 
0.467372, 0.70027, 1.58264, 1.260921)
cluster=c(1,2,3,4,1,2,3,4,1,2,3,4)

df.graph <- data.frame(expectation, ci, timepoint, cluster)
df.graph$cluster <- factor(df.graph$cluster) # damit im Graph nach Farbe 
getrennt werden kann


cluster <- ggplot(data=df.graph, aes(x=timepoint, y=expectation, 
group=cluster, colour=cluster)) +
          geom_line(size=1.2, position=position_dodge(0.06)) +
          geom_point(size=4.2, position=position_dodge(0.06), 
aes(shape=cluster)) +
          scale_shape_manual(values=c(15, 16, 17, 18)) + # change shape 
of point manually
          scale_size_manual(values=c(2,3,4, 10)) +
          geom_errorbar(aes(ymin=expectation-ci, ymax=expectation+ci), 
width=.3, linetype="solid", position=position_dodge(0.06)) + # pd damit 
CI- 
Balken etwas verschoben sind
          ylab("Treatment expectations (ETS)") +
          xlab("") +
          scale_y_continuous(limits = c(5, 20), breaks=seq(1, 20, 1)) +
          scale_x_discrete(labels=c("baseline", "after briefing", "after 
session 4")) +
          theme_classic(base_size = 26) +
          scale_colour_manual(values=c("#003f5c", "#bc5090", "#ff6361", 
"#ffa600")) +
          theme(legend.position=c("top"),
                legend.text = element_text(size=20, colour = "gray29", 
family ="Calibri"), 
                legend.key.size = unit(1.7, 'lines'),
                legend.title=element_blank(),
                panel.grid.major = element_blank(), # removes gridlines
                panel.grid.minor = element_blank(), 
                axis.line = element_line(colour = "black"),
                axis.title.y = element_text(colour = "gray29", family 
="Calibri", size=22),
                axis.text.x = element_text(colour = "gray29", size=18, 
family ="Calibri"), # Achesenbeschriftung x-Achse
                axis.text.y = element_text(colour = "gray29", size=18, 
family ="Calibri"),
                panel.background = element_rect(fill = "transparent", 
color = NA), # bg of the panel
                plot.background = element_rect(fill = "transparent", 
color = NA),
                legend.background = element_rect(fill = "transparent", 
size = 0),
                legend.key = element_rect(fill = 'transparent', color = 
NA)) # get rid of legend bg)

实际结果显示数据框中定义的 1、2、3、4。我想要 在我的传说中有实际的标签。

original version

second version using scale_colour_manual as proposed in the comments

【问题讨论】:

【参考方案1】:

既然你想传说的是你情节的colour,你可以在scale_colour_manual里面做:

scale_colour_manual(
  values=c("#003f5c", "#bc5090", "#ff6361", "#ffa600"),
  labels = c('whatever', 'you', 'want', 'as label')
  )

【讨论】:

感谢您的快速回答。但是我之前尝试过,但这会产生两个图例。我想添加它的图片,但我不知道如何将它包含在我的帖子中? 因此我将它添加到我的原始帖子中。【参考方案2】:

如果您在 scale_shape_manual 中分配与 scale_color_manual 中相同的标签,它应该可以工作。

scale_shape_manual(values=c(15, 16, 17, 18),
                   labels = c('whatever', 'you', 'want', 'as label')) + 
scale_colour_manual(values=c("#003f5c", "#bc5090", "#ff6361", "#ffa600"),
                    labels = c('whatever', 'you', 'want', 'as label')) +

【讨论】:

以上是关于如何更改图例中的标签?的主要内容,如果未能解决你的问题,请参考以下文章

Plotly:如何在 plotly express 折线图中更改图例的变量/标签名称?

通过 matplotlib 中的列值更改图例条目

更改图例标签时,Matplotlib 图例颜色会发生变化

Visual Studio 2016 堆积条形图图例:更改标签标题

Visual Studio 2016堆积条形图图例:更改标签标题

07版EXCEL中的图表如何增加图例