শ্রেণীর তারিখের এক্স-অক্ষে কিভাবে উল্লম্ব জিওম_ভ্লাইন পাবেন?


109

যদিও আমি গুগল গ্রুপে হ্যাডলির পোস্টটি পেয়েছি POSIXctএবং geom_vlineতা পেরেছি না। আমার একটি সময় সিরিজ রয়েছে এবং উদাহরণস্বরূপ 1998, 2005 এবং 2010-র জন্য একটি উল্লম্ব রেখা আঁকতে চাই। আমি চেষ্টা করেছিলাম ggplotএবং qplotসিনট্যাক্স দিয়েছি, তবুও আমি দেখতে পাচ্ছি না কোনও উল্লম্ব রেখাটি একেবারেই নয় বা উল্লম্ব লাইনটি প্রথম প্রথম উল্লম্ব গ্রিডে আঁকা এবং পুরো সিরিজটি কিছুটা আশ্চর্যজনকভাবে ডানে সরে গেছে।

gg <- ggplot(data=mydata,aes(y=somevalues,x=datefield,color=category)) +
      layer(geom="line")
gg + geom_vline(xintercept=mydata$datefield[120],linetype=4)
# returns just the time series plot I had before, 
# interestingly the legend contains dotted vertical lines

আমার তারিখ ক্ষেত্র বিন্যাস রয়েছে "1993-07-01" এবং ক্লাসের হয় Date


1
আপনি কি আপনার ডাটাফ্রেমের কয়েকটি সারি যুক্ত করতে পারেন, যাতে আমরা আপনার উদাহরণটি চেষ্টা করতে পারি?
সারাহ পশ্চিম

উত্তর:


141

চেষ্টা করুন as.numeric(mydata$datefield[120]):

gg + geom_vline(xintercept=as.numeric(mydata$datefield[120]), linetype=4)

একটি সহজ পরীক্ষার উদাহরণ:

library("ggplot2")

tmp <- data.frame(x=rep(seq(as.Date(0, origin="1970-01-01"),
                            length=36, by="1 month"), 2),
                  y=rnorm(72),
                  category=gl(2,36))

p <- ggplot(tmp, aes(x, y, colour=category)) +
     geom_line() +
     geom_vline(xintercept=as.numeric(tmp$x[c(13, 24)]),
                linetype=4, colour="black")
print(p)

geom_vline উদাহরণ প্লট


আমি 'as.numeric ()' খুঁজে পেয়েছি আসলে খুঁজে পাওয়া বেশ শক্ত! ধন্যবাদ।
আরনো_ভি

3
আমি ভাবছি যদি geom_vline(aes(xintercept=as.numeric(x[c(13, 24)])), linetype=4, colour="black")আরও বুদ্ধিমান হয়, অর্থাত্ aesপরিবর্তে ব্যবহার করে tmp$
ডেভিড আরেনবুর্গ

1
এই সমাধানটি আর কাজ করে না। কোড উত্পাদন করে `` `ত্রুটি: কোনও স্ট্যাটাসহ স্তর তৈরি করার চেষ্টা করা হয়েছে। rlang::last_error()ত্রুটিটি কোথায় ঘটেছে তা দেখতে দৌড়ে যান
``

30

geom_vline(xintercept = as.numeric(as.Date("2015-01-01")), linetype=4)আপনার তারিখটি 120 তম সারিতে রয়েছে কি না আপনি যদি লাইনটি নিজের জায়গায় রাখতে চান তবে আপনিও করতে পারেন।


13
আমার মেশিনে (আর .২.২.২ এবং জিগপ্লট ১.০.১ সহ উইন 10), সঠিকভাবে সারিবদ্ধ হওয়ার জন্য আমাকে তারিখটি পসিক্সটকে জোর করে নিতে হবে: as.POSIXct(as.Date(c("2016-12-01","2017-02-01")))
জ্যাথর্প

আপনাকে জ্যাথর্প ধন্যবাদ .. এটিই আমার জন্য কাজ করা একমাত্র সংস্করণ
কালার স্ট্যাটিসটিক্স

2

as.numeric আমার কাজ করে

ggplot(data=bmelt)+
  geom_line(aes(x=day,y=value,colour=type),size=0.9)+
  scale_color_manual(labels = c("Observed","Counterfactual"),values = c("1","2"))+
  geom_ribbon(data=ita3,aes(x=day, 
      y=expcumresponse, ymin=exp.cr.ll,ymax=exp.cr.uu),alpha=0.2) +
  labs(title="Italy Confirmed cases",
        y ="# Cases ", x = "Date",color="Output")+
  geom_vline(xintercept = as.numeric(ymd("2020-03-13")), linetype="dashed", 
                color = "blue", size=1.5)+
  theme_minimal()

কোড আউটপুট

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.