मैं geom_raster को scale_fill_fermenter के साथ प्लॉट करने के लिए ggplot का उपयोग करने का प्रयास कर रहा हूं। मैं आर v4.0.2 और ggplot <3.3.2 का उपयोग कर रहा हूँ।

मैं चाहता हूं कि मेरे एनए मान गहरे भूरे या काले रंग के रूप में दिखाई दें, लेकिन scale_fill_fermenter एनएएस को छोड़ रहा है, जबकि scale_fill_gradient, जिसे मैं उपयोग नहीं करना पसंद करूंगा, उन्हें बरकरार रखता है।

यानी मैं इसके लिए लुक चाहता हूं (scale_fill_gradient से):

scale_fill_gradient with NAs

लेकिन scale_fill_fermenter का उपयोग करके मुझे यह मिलता है:

scale_fill_fermenter with NAs

मैं इसे कैसे ठीक करूं?

एक मेगावाट:

library(ggplot2)

dat = read.csv(text="a,b,c\n100,1000,NA\n500,1000,NA\n1000,500,0.10817004452149229\n1000,100,0.0930867799644483\n100,100,0.033891940293246624\n500,100,0.0784308558280871\n100,500,0.07515759043562542\n1000,1000,NA\n500,500,0.10275381878402282\n")
dat$a = as.factor(dat$a)
dat$b = as.factor(dat$b)

p = ggplot(dat, aes(x = b, y = a)) + 
  geom_raster(aes(fill=c)) + 
  geom_label(aes(label=round(c,digits=1)), fill="white", fontface="bold", label.size=0, label.padding = unit(0.1, "lines")) +
  scale_fill_gradient(low="#fee8c8", high="red") 

print(p)

ggsave("/z/out1.png", p)

p = ggplot(dat, aes(x = b, y = a)) + 
  geom_raster(aes(fill=c)) + 
  geom_label(aes(label=round(c,digits=1)), fill="white", fontface="bold", label.size=0, label.padding = unit(0.1, "lines")) +
  scale_fill_fermenter(type="seq", palette="Reds", direction=1, na.value = "black")

print(p)

ggsave("/z/out2.png", p)
0
Richard 12 अगस्त 2020, 21:22

1 उत्तर

सबसे बढ़िया उत्तर

जब मैं इसे R 4.0.2 और ggplot2 3.3.2 के साथ चलाता हूं तो यह NA मान सही ढंग से (काले रंग के रूप में) प्रदर्शित होते हैं।

update.packages() का उपयोग करके ggplot2 के नवीनतम संस्करण में अपडेट करने से यह ठीक हो जाएगा।

1
nniloc 12 अगस्त 2020, 22:32