2

以下は、ggplotを使用して凡例を生成しません。バーの色を識別する凡例が必要です。

df1 <- data.frame(Response = factor(c(1,1,2,2,3,3,4,4)),
                  treatment = factor(c("Active",  "Placebo", "Active",
                  "Placebo", "Active","Placebo","Active","Placebo"),
                                       levels=c("Active","Placebo")),
              percent = c(16.81, 13.53, 17.42, 16.24, 25.33, 19.27,
                          100-16.81-17.42-25.33,100-13.53-16.24-19.25))

# Bar graph, with side-by-side bars
ggplot(data=df1, aes(x=Response, y=percent, fill=treatment, order=treatment)) + 
  geom_bar(stat="identity", position=position_dodge()) + 
  ylab("Percent") + xlab("Outcome") +
  scale_x_discrete(breaks=factor(1:4), labels=c("CR","PR","SD","PD"))+
  scale_fill_manual(values=c("black","red", name="Response", 
                breaks=1:2, labels=c("Active","Placebo"))
4

2 に答える 2

3

scale_fill_manual最後の部分以外は大丈夫です。問題を与える部分はbreaks=1:2. fill=treatmentしかし、ブレークが に設定されていることを意味する を設定したため、これは当てはまりませんlevels of treatment。したがって、 を設定する場合はbreaks、たとえば次のようにする必要がありますbreaks=levels(factor(df1$treatment))(これは冗長です)。もちろん、ラベルは任意の値に変更できます。例えば:

凡例が削除されないようにするためにできることは次のとおりです。

# No issues changing values of labels for every breaks set
scale_fill_manual(values=c("black","red"), name = "Response",
      breaks = levels(factor(df1$treatment)), 
      labels = c("bla1", "bla2"))

labelsただし、に設定した同じ値を に使用する場合は、これで十分ですbreaks

scale_fill_manual(values=c("black","red"), name = "Response")

コード全体は次のとおりです。

p <- ggplot(data = df1, aes(x = Response, y = percent, fill = treatment, 
            order = treatment))
p <- p + geom_bar(stat = "identity", position = position_dodge()) 
p <- p + ylab("Percent") + xlab("Outcome")
p <- p + scale_x_discrete(breaks=factor(1:4), labels=c("CR","PR","SD","PD"))
p <- p + scale_fill_manual(values=c("black","red"), name = "Response", 
         labels = c("Active", "Placebo")) 
# although labels is redundant if you aren't changing its value
p
于 2013-01-27T11:47:54.480 に答える
0
ggplot(data=df1, aes(x=Response, y=percent, fill=treatment, order=treatment)) + 
  geom_bar(stat="identity", position=position_dodge()) + 
  ylab("Percent") + xlab("Outcome") +
  scale_x_discrete(breaks=factor(1:4), labels=c("CR","PR","SD","PD")) +
  scale_fill_manual(values=c("black","red"))

ここに画像の説明を入力

于 2013-01-27T11:51:36.883 に答える