2014-09-02 5 views
11

मैं एक बिंदु-साजिश में तीन प्रकार की जानकारी व्यक्त करना चाहता हूं। मैं रंग, आकार और भरने का उपयोग कर सकता हूं (मेरे वास्तविक डेटा में आकार का प्रभावी ढंग से उपयोग करने के लिए बहुत अधिक अंक हैं)। लेकिन अगर भरने का रंग रूपरेखा रंग जैसा ही होता तो यह सबसे अच्छा लगेगा।भरने वाले और खोखले आकार जहां भरने का रंग = रेखा रंग

निकटतम मैं प्राप्त कर सकते हैं यह है:

data(mtcars) 
p <- ggplot(mtcars,aes(x=mpg,y=wt))+ 
    geom_point(aes(color=factor(cyl),shape=factor(gear),fill=factor(vs)))+ 
    scale_fill_manual(values=c("black",NA))+scale_shape_manual(values=c(21,22,23)) 

enter image description here

जो, बदसूरत सभी रूपरेखा रंगों में काला भर जाता है। लाल और लाल नीले रंग के लाल रंग के साथ लाल बिंदु को भरने के बारे में कोई विचार?

उत्तर

17

NA परिचय, और scale_fill_discrete साथ NA रंग करने के लिए उन को मैप:

ggplot(mtcars,aes(x=mpg,y=wt)) + 
    geom_point(size=10, 
    aes(
     color=factor(cyl), 
     shape=factor(gear), 
     fill=factor(ifelse(vs, NA, cyl))   # <---- NOTE THIS 
)) + 
    scale_shape_manual(values=c(21,22,23)) + 
    scale_fill_discrete(na.value=NA, guide="none") # <---- NOTE THIS 

का उत्पादन:

enter image description here


संपादित करें: श्री फ्लिक करने के लिए, हम धोखा और जोड़ सकते हैं परतें/अल्फा। ध्यान दें कि हम एक परत जोड़ने के लिए के रूप में तक मुझे पता है वहाँ रंग के लिए स्वतंत्र रूप से अल्फा को नियंत्रित करने और भरने के लिए कोई रास्ता नहीं है, क्योंकि जरूरत है:

library(ggplot2) 
ggplot(mtcars,aes(x=mpg,y=wt, color=factor(cyl), shape=factor(gear))) + 
    geom_point(size=10, aes(fill=factor(cyl), alpha=as.character(vs))) + 
    geom_point(size=10) +  
    scale_shape_manual(values=c(21,22,23)) + 
    scale_alpha_manual(values=c("1"=0, "0"=1)) 

enter image description here

+1

चालाक। लेकिन 'बनाम' मान के लिए एक किंवदंती जोड़ना आसान नहीं है जो दर्शाता है कि कौन से लोग भरे हुए हैं और कौन से खाली हैं, है ना? अभी यह स्पष्ट नहीं है कि भरे और खाली लोगों के बीच क्या अंतर है। – MrFlick

+1

@MrFlick, उचित आलोचना। अद्यतन देखें। – BrodieG

+1

एक और चालाक समाधान/कामकाज। मुझे खेद है कि मेरे पास देने के लिए एक वोट है। – MrFlick

संबंधित मुद्दे