ggplot2 অব্যবহৃত স্তরের বারপ্লট রাখুন


100

আমি আমার বার-প্লটে অব্যবহৃত স্তরের (এটি হ'ল স্তর যেখানে গণনা 0 আছে) প্লট করতে চাই, তবে অব্যবহৃত স্তরগুলি বাদ পড়ে যায় এবং কীভাবে রাখব তা আমি বুঝতে পারি না

df <- data.frame(type=c("A", "A", "A", "B", "B"), group=rep("group1", 5))
df$type <- factor(df$type, levels=c("A","B", "C"))

ggplot(df, aes(x=group, fill=type)) + geom_bar()

উপরের উদাহরণে, আমি সি গণনা 0 দিয়ে দেখতে চাই, তবে এটি সম্পূর্ণ অনুপস্থিত ...

কোন সাহায্যের জন্য উলরিক ধন্যবাদ

সম্পাদনা করুন:

এটি আমি যা চাই তা করে

df <- data.frame(type=c("A", "A", "A", "B", "B"), group=rep("group1", 5))
df1 <- data.frame(type=c("A", "A", "A", "B", "B", "A", "A", "C", "B", "B"), group=c(rep("group1", 5),rep("group2", 5)))

df$type <- factor(df$type, levels=c("A","B", "C"))
df1$type <- factor(df1$type, levels=c("A","B", "C"))
df <- data.frame(table(df))

df1 <- data.frame(table(df1))

ggplot(df, aes(x=group, y=Freq, fill=type)) + geom_bar(position="dodge")
ggplot(df1, aes(x=group, y=Freq, fill=type)) + geom_bar(position="dodge")

সমাধানটি টেবিল () এবং তারপরে প্লট ব্যবহার করে ফ্রিকোয়েন্সি গণনা করা অনুমান করুন

উত্তর:


68

আপনার দুটি ড্রপে (ফিল এবং এক্স) এর মতো ড্রপ = ফলস সেট করতে হবে:

library(ggplot2)
df <- data.frame(type=c("A", "A", "A", "B", "B"), group=rep("group1", 5))
df1 <- data.frame(type=c("A", "A", "A", "B", "B", "A", "A", "C", "B", "B"), group=c(rep("group1", 5),rep("group2", 5)))
df$type <- factor(df$type, levels=c("A","B", "C"))
df1$type <- factor(df1$type, levels=c("A","B", "C"))

plt <- ggplot(df, aes(x=type, fill=type)) + geom_bar(position='dodge') + scale_fill_discrete(drop=FALSE) + scale_x_discrete(drop=FALSE)
plt1 <-  ggplot(df1, aes(x=type, fill=type)) + geom_bar(position='dodge') + scale_fill_discrete(drop=FALSE) + scale_x_discrete(drop=FALSE)

সম্পাদনা করুন:

আমি নিশ্চিত যে এটি কাজ করে। গ্রুপ এবং পজিশন = 'ডজ' এর পরিবর্তে এক্স টাইপ করতে ভুলে গেছেন! শুধু পেস্ট এবং পরীক্ষা। স্ট্যাট_বিন শূন্যের সাথে গণনা করে। দস্তাবেজগুলি পরীক্ষা করুন ।


আমি মনে করি এটি ওপি-র প্রশ্নের উত্তর হওয়া উচিত। উত্তরটি কিংবদন্তীর মধ্যেও বাদ পড়া স্তরের যত্ন নেয়।
সেভডবাইজেসস

যখন আমি এটি করি এটি আমার বারগুলির রঙ পরিবর্তন করে। মূল রঙগুলি রাখার কোনও উপায় আছে?
মরগান 121


9

ড্রপিং লেভেল কাজ করে না। প্রথম উদাহরণে ড্রপিংয়ের স্তর

library(ggplot2)

df <- data.frame(type=c("A", "A", "A", "B", "B"), group=rep("group1", 5))
df$type <- factor(df$type, levels=c("A","B", "C"))

ggplot(df, aes(x=group, fill=type)) + geom_bar(position="dodge") + scale_x_discrete(drop=FALSE) + scale_fill_discrete(drop=FALSE)

এই চক্রান্ত ফলাফল:

এখানে চিত্র বর্ণনা লিখুন

সমাধানটি দ্বিতীয় উদাহরণে যেখানে ফ্রিকোয়েন্সিগুলি ম্যানুয়ালি গণনা করা হয়:

df <- data.frame(type=c("A", "A", "A", "B", "B"), group=rep("group1", 5))
df1 <- data.frame(type=c("A", "A", "A", "B", "B", "A", "A", "C", "B", "B"), group=c(rep("group1", 5),rep("group2", 5)))

df$type <- factor(df$type, levels=c("A","B", "C"))
df1$type <- factor(df1$type, levels=c("A","B", "C"))

df <- data.frame(table(df))
df1 <- data.frame(table(df1))

df$plot = "A"
df1$plot = "B"

df <- rbind(df, df1)

ggplot(df, aes(x=group, y=Freq, fill=type)) + geom_bar(position="dodge", stat="identity") + facet_wrap( ~ plot, scales="free")

এর ফলাফল:

এখানে চিত্র বর্ণনা লিখুন

সর্বশেষটি সর্বাধিক তথ্যবহুল কারণ স্থানটি সেখানে গণনা = 0 বিভাগের দ্বারা নেওয়া হয়


1

আপনি উদাহরণস্বরূপ "স্কেল_ফিল_ক্লোর" ব্যবহার করতে পারেন:

plt <- ggplot(df, aes(x=type, fill=type)) + geom_bar(position='dodge') + scale_x_discrete(drop=FALSE)+
scale_fill_manual(
  values = c(
    "#ff6666",
    "#cc9900",
    "#cc9900",
    ),drop=FALSE)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.