मैं आर में एक साधारण डेटा संरचना बनाने की कोशिश कर रहा हूं और ऐसा करने की कोशिश में बहुत असफल हो रहा हूं। मेरा लक्ष्य ऐसा कुछ एक साथ रखना है जो इस तरह दिखता है:

c("#E08214" = "#E08214", "#E08216" = "#E08216") 

डेटा संरचना का उद्देश्य एक अजीब बार प्लॉट में प्रत्येक बार के रंगों को मैन्युअल रूप से असाइन करने में मेरी सहायता करना है (हेक्स रंगों को मेरे डेटाफ्रेम में पहचाना जाता है, और मैं प्रत्येक बार के रंग को सेट करने के लिए scale_colour_manual(values = c("#E08214" = "#E08214", "#E08216" = "#E08216")) का उपयोग करने की योजना बना रहा हूं।

मैं अपने रंगों की सूची इस प्रकार बना सकता हूं: levels(df$color)। मैंने इस सूची को डेटा संरचना में बदलने की कोशिश की, जैसा कि ऊपर की पहचान करके किया गया है:

assignments = c()
for (color in levels(df$color)) {
  assignments <- c(color = color, assignments)
}

लेकिन यह शानदार ढंग से विफल रहता है। इस प्रश्न पर दूसरों को प्रदान करने में सक्षम कोई भी मदद की सराहना की जाएगी।

पूर्ण कोड नमूना:

library(ggplot2)
library(data.table)

url <- 'https://gist.githubusercontent.com/duhaime/5e06cb7d703dc818f06aa49da67ed13b/raw/1d597e4bf523d925ef3b9873e622c96d7877d347/pop.df'
df <- fread(url)
colnames(df) <- c('vid', 'frame.idx', 'box.idx', 'color', 'percent')

ggplot(df, aes(x=frame.idx, y=percent)) +
  geom_bar(stat='identity', aes(fill='color')) +
  facet_wrap(~vid, ncol=1) +
  guides(fill=FALSE) +
  scale_fill_identity()
0
duhaime 13 पद 2017, 05:56

2 जवाब

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

मुझे लगता है कि आप इस तरह कुछ ढूंढ रहे हैं:

ggplot(df, aes(x=frame.idx, y=percent, group=frame.idx, order=box.idx)) +
  geom_col(position="stack", aes(fill=color), size=0) +
  facet_wrap(~vid, ncol=1) +
  guides(fill=FALSE) +
  scale_fill_identity() +
  theme_bw() +
  theme(panel.grid.major.x=element_blank())

enter image description here

मुझे पूरा यकीन है कि आपके डेटा को विज़ुअलाइज़ेशन पसंद के रूप में कुछ काम करने की ज़रूरत है।

2
hrbrmstr 13 पद 2017, 07:15

names(assignments) <- levels(df$color) को भी सेट करने का प्रयास करें

तो आप नीचे के रूप में कोड कर सकते हैं

assignments <- levels(df$color)
names(assignments) <- assignments

या जिस तरह से आप वर्तमान में कर रहे हैं

assignments = c()
for (color in levels(df$color)) {
  assignments <- c(color, assignments)
}

names(assignments) <- assignments
0
A5C1D2H2I1M1N2O1R2T1 13 पद 2017, 14:40