إنشاء الرسم البياني الكثافة في غبلوت2?
-
26-12-2019 - |
سؤال
أريد إنشاء مخطط كثافة الرسم البياني التالي باستخدام ggplot2
.في الطريقة " العادية "(الحزم الأساسية) من السهل حقا:
set.seed(46)
vector <- rnorm(500)
breaks <- quantile(vector,seq(0,1,by=0.1))
labels = 1:(length(breaks)-1)
den = density(vector)
hist(df$vector,
breaks=breaks,
col=rainbow(length(breaks)),
probability=TRUE)
lines(den)
مع غبلوت لقد وصلت إلى هذا حتى الآن:
seg <- cut(vector,breaks,
labels=labels,
include.lowest = TRUE, right = TRUE)
df = data.frame(vector=vector,seg=seg)
ggplot(df) +
geom_histogram(breaks=breaks,
aes(x=vector,
y=..density..,
fill=seg)) +
geom_density(aes(x=vector,
y=..density..))
لكن المقياس " ص " له بعد خاطئ.لقد لاحظت أن المدى التالي يحصل على مقياس "ص" الصحيح.
ggplot(df) +
geom_histogram(breaks=breaks,
aes(x=vector,
y=..density..,
fill=seg)) +
geom_density(aes(x=vector,
y=..density..))
أنا فقط لا أفهم ذلك. y=..density..
هل هناك ، يجب أن يكون الارتفاع.فلماذا على الأرض يحصل على تعديل مقياس بلدي عندما أحاول ملئه?
أنا بحاجة إلى الألوان.أريد فقط الرسم البياني حيث يتم تعيين فواصل وألوان كل كتلة اتجاهي وفقا ل غبلوت ملء الألوان الافتراضية.
المحلول
يدويا ، أضفت الألوان إلى أشرطة النسبة المئوية الخاصة بك.معرفة ما إذا كان هذا يعمل بالنسبة لك.
library(ggplot2)
ggplot(df, aes(x=vector)) +
geom_histogram(breaks=breaks,aes(y=..density..),colour="black",fill=c("red","orange","yellow","lightgreen","green","darkgreen","blue","darkblue","purple","pink")) +
geom_density(aes(y=..density..)) +
scale_x_continuous(breaks=c(-3,-2,-1,0,1,2,3)) +
ylab("Density") + xlab("df$vector") + ggtitle("Histogram of df$vector") +
theme_bw() + theme(plot.title=element_text(size=20),
axis.title.y=element_text(size = 16, vjust=+0.2),
axis.title.x=element_text(size = 16, vjust=-0.2),
axis.text.y=element_text(size = 14),
axis.text.x=element_text(size = 14),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank())
نصائح أخرى
fill=seg
النتائج في التجمع.كنت في الواقع الحصول على الرسم البياني مختلفة لكل قيمة seg
.إذا كنت لا تحتاج إلى الألوان ، يمكنك استخدام هذا:
ggplot(df) +
geom_histogram(breaks=breaks,aes(x=vector,y=..density..), position="identity") +
geom_density(aes(x=vector,y=..density..))
إذا كنت بحاجة إلى الألوان ، قد يكون من الأسهل لحساب قيم الكثافة خارج غبلوت2.
الارتباك فيما يتعلق بتفسير y-axis
قد يكون بسبب الكثافة المرسومة بدلا من العد.لذا ، فإن القيم على y-axis
هي نسب من إجمالي العينة ، حيث مجموع القضبان يساوي 1
.