যদিও ggplot2- এ একাধিক / ওভারল্যাপিং হিস্টোগ্রামগুলি প্লট করার জন্য কয়েকটি লাইনের প্রয়োজন, ফলাফল সর্বদা সন্তোষজনক নয়। হিস্টোগ্রামের মধ্যে চোখের পার্থক্য করতে পারে তা নিশ্চিত করার জন্য সীমানা এবং বর্ণের যথাযথ ব্যবহার প্রয়োজন ।
দর্শকদের বিতরণগুলির মধ্যে পার্থক্য করতে সক্ষম করতে নিম্নলিখিত ফাংশনগুলি সীমানার রং, অস্বচ্ছতা এবং সুপারম্পোজযুক্ত ঘনত্ব প্লটগুলিকে ভারসাম্যপূর্ণ করে ।
একক হিস্টোগ্রাম :
plot_histogram <- function(df, feature) {
plt <- ggplot(df, aes(x=eval(parse(text=feature)))) +
geom_histogram(aes(y = ..density..), alpha=0.7, fill="#33AADE", color="black") +
geom_density(alpha=0.3, fill="red") +
geom_vline(aes(xintercept=mean(eval(parse(text=feature)))), color="black", linetype="dashed", size=1) +
labs(x=feature, y = "Density")
print(plt)
}
একাধিক হিস্টোগ্রাম :
plot_multi_histogram <- function(df, feature, label_column) {
plt <- ggplot(df, aes(x=eval(parse(text=feature)), fill=eval(parse(text=label_column)))) +
geom_histogram(alpha=0.7, position="identity", aes(y = ..density..), color="black") +
geom_density(alpha=0.7) +
geom_vline(aes(xintercept=mean(eval(parse(text=feature)))), color="black", linetype="dashed", size=1) +
labs(x=feature, y = "Density")
plt + guides(fill=guide_legend(title=label_column))
}
ব্যবহার :
পছন্দসই যুক্তিগুলির সাথে উপরের ফাংশনগুলিতে কেবল আপনার ডেটা ফ্রেমটি পাস করুন :
plot_histogram(iris, 'Sepal.Width')
plot_multi_histogram(iris, 'Sepal.Width', 'Species')
অতিরিক্ত প্যারামিটার plot_multi_histogram বিভাগ লেবেল কলামে নাম।
আমরা আরও বিভিন্ন নাটকীয়ভাবে বিভিন্ন বিতরণের অর্থ সহ একটি ডেটা ফ্রেম তৈরি করে দেখতে পারি :
a <-data.frame(n=rnorm(1000, mean = 1), category=rep('A', 1000))
b <-data.frame(n=rnorm(1000, mean = 2), category=rep('B', 1000))
c <-data.frame(n=rnorm(1000, mean = 3), category=rep('C', 1000))
d <-data.frame(n=rnorm(1000, mean = 4), category=rep('D', 1000))
e <-data.frame(n=rnorm(1000, mean = 5), category=rep('E', 1000))
f <-data.frame(n=rnorm(1000, mean = 6), category=rep('F', 1000))
many_distros <- do.call('rbind', list(a,b,c,d,e,f))
আগের মতো ডেটা ফ্রেম পাস করা (এবং বিকল্পগুলি ব্যবহার করে চার্টকে প্রশস্ত করা):
options(repr.plot.width = 20, repr.plot.height = 8)
plot_multi_histogram(many_distros, 'n', 'category')