以下のガイドはggplot Donut chartのように表示されています。後で地図上に置くつもりで、小さなゲージ、ラベルのついたドーナツを描こうとしています。ggplot2:ドーナツ、if_elseでコンディショナルカラーフィルを行う方法
値が一定のしきい値に達すると、ドーナツの塗りつぶしが赤に変わります。 if_elseで達成することは可能ですか(それは最も自然だろうが動作しません)。
library(tidyverse)
df <- tibble(ID=c("A","B"),value=c(0.7,0.5)) %>% gather(key = cat,value = val,-ID)
ggplot(df, aes(x = val, fill = cat)) + scale_fill_manual(aes,values = c("red", "yellow"))+
geom_bar(position="fill") + coord_polar(start = 0, theta="y")
ymax <- max(df$val)
ymin <- min(df$val)
p2 = ggplot(df, aes(fill=cat, y=0, ymax=1, ymin=val, xmax=4, xmin=3)) +
geom_rect(colour="black",stat = "identity") +
scale_fill_manual(values = if_else (val > 0.5, "red", "black")) +
geom_text(aes(x=0, y=0, label= scales::percent (1-val)), position = position_dodge(0.9))+
coord_polar(theta="y") +
xlim(c(0, 4)) +
theme_void() +
theme(legend.position="none") +
scale_y_reverse() + facet_wrap(facets = "ID")
スケール他にあれば....この部分は動作しません=マニュアル値を記入し、エラーが言う:if_elseでエラーが発生しました(val>は0.5、 "赤"、 "黒"):オブジェクトのヴァル」ではありません見つかりました。それは私のエラーですか、あるいは他の解決策がありますか?
私のコードが最適ではないこともわかっていますが、最初は、より多くの変数がプロットに含まれるのを待っていましたが、他の変数の上に1つの変数をスタックできませんでした。これで1つの変数で完了の割合を示すことができます。私は自分のコードが目的のために冗長であることを実感します。あなたは私を助けることができます?
'ifelse()'を試しましたか? 'if_else'はR関数ではありません。 – BLT
@BLT 'if_else'はdplyr関数です。 'ifelse'に似ていますが、いくつかの問題が修正されています。 –
@NicolasPinto私は古いバージョンを持っているので、私が検索したときにそれは上がっていませんでした。ありがとう! – BLT