मैंने पहले भी इसी तरह का सवाल पूछा था, लेकिन पिछला कोड मेरी समस्या को हल करने में असमर्थ लगता है।

विशेष रूप से मैं नीचे अपने प्लॉट में एक किंवदंती जोड़ना चाहता हूं। मैं चाहता हूं कि डार्क लाइन को "क्लस्टर 1", स्टीलब्लू लाइन को "क्लस्टर 2" और ब्लैक लाइन को "क्लस्टर 3" के रूप में नामित किया जाए। मैंने अपना प्रयास नीचे दिया है। मुझे उम्मीद है कि कोड को केवल इसमें एक छोटे से बदलाव की आवश्यकता होगी। किंवदंती को एक शीर्षक की आवश्यकता नहीं है, लेकिन यदि आवश्यक हो तो इसे "लीजेंड" या "कुंजी" कहा जा सकता है।

mat1 <- data.frame(matrix(nrow =10, ncol =4))
colnames(mat1) = c("Date", "Cluster 1", "Cluster 2", "Cluster 3")
date.start = as.Date("2000-01-01")
date.end = as.Date("2000-10-01")
date = seq(from = date.start, to = date.end, by = "month")
mat1[,1] = date
mat1[,2:4] = rnorm(30,0,1)
mat1 %>% ggplot(aes(x= Date, group=1)) + 
  geom_line(aes(y = `Cluster 1`), color = "darkred", linetype = "solid", size=1) +
  geom_line(aes(y = `Cluster 2`), color="steelblue", linetype="twodash", size =1) + 
  geom_line(aes(y= `Cluster 3`), color = "black", linetype = "longdash", size = 1) +
  scale_colour_manual("Legend",
                      values = c("Cluster 1" = "darkred", "Cluster 2" ="steelblue", "Cluster 3" = "black"),
                      breaks = c("Cluster 1", "Cluster 2", "Cluster 3")) +
  scale_linetype_manual("Legend",
                        values = c("solid", "twodash", "longdash"),
                        breaks = c("Cluster 1", "Cluster 2", "Cluster 3")) +
  xlab("Date") + ylab("Average Coefficient") + ggtitle("HML Factor") + theme_classic() +
  theme(
    plot.title = element_text(color = "black", size = 12, face = "bold"),
    axis.title = element_text(size = 12)
  )
1
JC3019 17 सितंबर 2019, 14:40

1 उत्तर

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

आप जो करना चाहते हैं उसे प्राप्त करने के लिए मैं पहले आपकी डेटा संरचना को समायोजित करने का सुझाव दूंगा।

आप इसे tidyr के gather फ़ंक्शन के साथ कर सकते हैं, और इसे अपनी mat1[,2:4] = rnorm(30,0,1) लाइन के बाद कर सकते हैं:

mat1 <- mat1 %>% 
  tidyr::gather(cluster, value, `Cluster 1`:`Cluster 3`)

फिर आपके पास वर्तमान में मौजूद तीनों को बदलने के लिए एक एकल geom_line कॉल जोड़ें:

mat1 %>% ggplot(aes(x= Date, y = value)) + 
  # geom_line(aes(y = `Cluster 1`), color = "darkred", linetype = "solid", size=1) +
  # geom_line(aes(y = `Cluster 2`), color="steelblue", linetype="twodash", size =1) + 
  # geom_line(aes(y= `Cluster 3`), color = "black", linetype = "longdash", size = 1) +
  geom_line(aes(colour = cluster, linetype = cluster), size = 1) +
  scale_colour_manual(values = c("Cluster 1" = "darkred", "Cluster 2" ="steelblue", "Cluster 3" = "black")) +
  scale_linetype_manual(values = c("Cluster 1" = "solid", "Cluster 2" = "twodash", "Cluster 3" = "longdash")) +
  xlab("Date") + ylab("Average Coefficient") + ggtitle("HML Factor") +     theme_classic() +
  theme(
    plot.title = element_text(color = "black", size = 12, face = "bold"),
    axis.title = element_text(size = 12)
  )

संपादित करें: geom_line सौंदर्यशास्त्र में जोड़ा गया लिनेटाइप

1
pwrignall 17 सितंबर 2019, 12:29