আর এর সাথে গ্যান্ট চার্ট [বন্ধ]


94

গ্যান্ট চার্ট তৈরি করতে কেউ কি আর ব্যবহার করেছে ?

PS আমি নির্ভরতা তীর ছাড়া বাঁচতে পারি।

উত্তর:


109

আর-তে একটি গ্যান্ট চার্ট তৈরির জন্য কয়েকটি মার্জিত উপায় রয়েছে are

ক্যান্ডেলা ব্যবহার করা হচ্ছে

library(candela)

data <- list(
    list(name='Do this', level=1, start=0, end=5),
    list(name='This part 1', level=2, start=0, end=3),
    list(name='This part 2', level=2, start=3, end=5),
    list(name='Then that', level=1, start=5, end=15),
    list(name='That part 1', level=2, start=5, end=10),
    list(name='That part 2', level=2, start=10, end=15))

candela('GanttChart',
    data=data, label='name',
    start='start', end='end', level='level',
    width=700, height=200)

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

ডায়াগ্রামের ব্যবহার

library(DiagrammeR)

mermaid("
gantt
dateFormat  YYYY-MM-DD
title A Very Nice Gantt Diagram

section Basic Tasks
This is completed             :done,          first_1,    2014-01-06, 2014-01-08
This is active                :active,        first_2,    2014-01-09, 3d
Do this later                 :               first_3,    after first_2, 5d
Do this after that            :               first_4,    after first_3, 5d

section Important Things
Completed, critical task      :crit, done,    import_1,   2014-01-06,24h
Also done, also critical      :crit, done,    import_2,   after import_1, 2d
Doing this important task now :crit, active,  import_3,   after import_2, 3d
Next critical task            :crit,          import_4,   after import_3, 5d

section The Extras
First extras                  :active,        extras_1,   after import_4,  3d
Second helping                :               extras_2,   after extras_1, 20h
More of the extras            :               extras_3,   after extras_1, 48h
")

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

এই উদাহরণটি এবং আরও অনেকগুলি DiagrammeR গিটহাবটিতে সন্ধান করুন


যদি আপনার ডেটা কোনও এ সংরক্ষণ করা হয় তবে data.frameআপনি স্ট্রিংটি mermaid()যথাযথ ফর্ম্যাটে রূপান্তর করে তৈরি করতে পারেন ।

নিম্নোক্ত বিবেচনা কর:

df <- data.frame(task = c("task1", "task2", "task3"),
                 status = c("done", "active", "crit"),
                 pos = c("first_1", "first_2", "first_3"),
                 start = c("2014-01-06", "2014-01-09", "after first_2"),
                 end = c("2014-01-08", "3d", "5d"))

#   task status     pos         start        end
#1 task1   done first_1    2014-01-06 2014-01-08
#2 task2 active first_2    2014-01-09         3d
#3 task3   crit first_3 after first_2         5d

ব্যবহার করে dplyrএবং tidyr(বা আপনার পছন্দের কোনও ডেটা র্যাংলিং রিসোর্সগুলি):

library(tidyr)
library(dplyr)

mermaid(
  paste0(
    # mermaid "header", each component separated with "\n" (line break)
    "gantt", "\n", 
    "dateFormat  YYYY-MM-DD", "\n", 
    "title A Very Nice Gantt Diagram", "\n",
    # unite the first two columns (task & status) and separate them with ":"
    # then, unite the other columns and separate them with ","
    # this will create the required mermaid "body"
    paste(df %>%
            unite(i, task, status, sep = ":") %>%
            unite(j, i, pos, start, end, sep = ",") %>%
            .$j, 
          collapse = "\n"
    ), "\n"
  )
)

মন্তব্যে @ জর্জডোন্টাসের উল্লেখ অনুসারে, একটি সামান্য হ্যাক রয়েছে যা এক্স অক্ষের লেবেলগুলিকে 'ডাব্লু .01, ডব্লু .02' এর পরিবর্তে তারিখগুলিতে পরিবর্তন করতে দেয়।

ধরে নিলাম আপনি উপরের মারমেইড গ্রাফটি এতে সংরক্ষণ করেছেন m, করুন:

m$x$config = list(ganttConfig = list(
  axisFormatter = list(list(
    "%b %d, %Y" 
    ,htmlwidgets::JS(
      'function(d){ return d.getDay() == 1 }' 
    )
  ))
))

যা দেয়:

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


টাইমভিস ব্যবহার করা

timevis গিটহাব থেকে :

timevisআপনাকে আর এ সমৃদ্ধ এবং সম্পূর্ণ ইন্টারেক্টিভ টাইমলাইন ভিজুয়ালাইজেশন তৈরি করতে দেয় Time টাইমলাইনগুলি চকচকে অ্যাপস এবং আর মার্কডাউন ডকুমেন্টগুলিতে অন্তর্ভুক্ত করা যেতে পারে, বা আর কনসোল এবং আরস্টুডিও ভিউয়ার থেকে দেখে নেওয়া যেতে পারে।

library(timevis)

data <- data.frame(
  id      = 1:4,
  content = c("Item one"  , "Item two"  ,"Ranged item", "Item four"),
  start   = c("2016-01-10", "2016-01-11", "2016-01-20", "2016-02-14 15:00:00"),
  end     = c(NA          ,           NA, "2016-02-04", NA)
)

timevis(data)

যা দেয়:

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


চক্রান্ত করে ব্যবহার করা

আমি অন্য পোস্ট ব্যবহার করে এই পোস্টে হোঁচট খেয়েছি plotly। এখানে একটি উদাহরণ:

library(plotly)

df <- read.csv("https://cdn.rawgit.com/plotly/datasets/master/GanttChart-updated.csv", 
               stringsAsFactors = F)

df$Start  <- as.Date(df$Start, format = "%m/%d/%Y")
client    <- "Sample Client"
cols      <- RColorBrewer::brewer.pal(length(unique(df$Resource)), name = "Set3")
df$color  <- factor(df$Resource, labels = cols)

p <- plot_ly()
for(i in 1:(nrow(df) - 1)){
  p <- add_trace(p,
                 x = c(df$Start[i], df$Start[i] + df$Duration[i]), 
                 y = c(i, i), 
                 mode = "lines",
                 line = list(color = df$color[i], width = 20),
                 showlegend = F,
                 hoverinfo = "text",
                 text = paste("Task: ", df$Task[i], "<br>",
                              "Duration: ", df$Duration[i], "days<br>",
                              "Resource: ", df$Resource[i]),
                 evaluate = T
  )
}

p

যা দেয়:

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

তারপরে আপনি অতিরিক্ত তথ্য এবং টীকাগুলি যুক্ত করতে পারেন, ফন্ট এবং রঙগুলি কাস্টমাইজ করতে পারেন ইত্যাদি (বিশদের জন্য ব্লগ পোস্ট দেখুন)


এটা সত্যিই দুর্দান্ত। তবে আমার কাছে এই স্ট্রিংটি স্বয়ংক্রিয়ভাবে মার্বেডে পাস করা ডেটাফ্রেমে সঞ্চিত ডেটা ব্যবহার করে তৈরি করা কঠিন বলে মনে হচ্ছে।
জর্জ ডোনটাস

"ডাব্লু .01", "ডাব্লু .02" ইত্যাদির পরিবর্তে কি এক্স অক্ষের লেবেল হিসাবে তারিখগুলি প্রদর্শন করা সম্ভব?
জর্জ ডোনটাস

4
0-52 সপ্তাহের স্কেলের পরিবর্তে কাস্টম তারিখ অক্ষকে মঞ্জুরি দেওয়ার জন্য গ্যান্ট চার্টটি ওভাররাইড করুন: github.com/rich-iannone/ ডায়াগ্রামমেআর
জর্জ ডন্টাস

কোডটি ডায়াগ্রামার এবং মার্টেমিটি রাস্তুডিওতে পুরোপুরিভাবে কাজ করে তবে পাওয়ারবিবিতে এটি ব্যবহার করার সময় আমি একটি ত্রুটি পেয়েছি ত্রুটি বার্তা: কোনও চিত্র তৈরি করা হয়নি। আর কোডের ফলে কোনও ভিজ্যুয়াল তৈরি হয়নি। আপনার আর স্ক্রিপ্টটি আর্ট ডিফল্ট ডিভাইসে প্লটের ফলাফল হিসাবে নিশ্চিত করুন। যে কোনও ধারণা
পেডিকে

4
সঙ্গে সমাধান timevisমধ্যে Rসৌন্দর্য ঠান্ডা এবং সরল। :-)
সুমন খানাল

29

একটি সাধারণ ggplot2গ্যান্ট চার্ট।

প্রথমত, আমরা কিছু ডেটা তৈরি করি।

library(reshape2)
library(ggplot2)

tasks <- c("Review literature", "Mung data", "Stats analysis", "Write Report")
dfr <- data.frame(
  name        = factor(tasks, levels = tasks),
  start.date  = as.Date(c("2010-08-24", "2010-10-01", "2010-11-01", "2011-02-14")),
  end.date    = as.Date(c("2010-10-31", "2010-12-14", "2011-02-28", "2011-04-30")),
  is.critical = c(TRUE, FALSE, FALSE, TRUE)
)
mdfr <- melt(dfr, measure.vars = c("start.date", "end.date"))

এখন প্লট আঁকুন।

ggplot(mdfr, aes(value, name, colour = is.critical)) + 
  geom_line(size = 6) +
  xlab(NULL) + 
  ylab(NULL)

আমি কেবলমাত্র দুবার কিছু ডেটা তৈরি করতে
পেরেছিলাম

@ gd047: এটি একটি দুই হাতের ফেসপামের জন্য কল করে। ইডিয়োসি এখন স্থির।
রিচি কটন

4
এটি খুব সুন্দর, তবে আমি যা খুঁজছি তা প্রতিটি কাজের জন্য একাধিক বার দেখানোর উপায় (যেমন আমি যে উদাহরণ দিয়েছি তা দেখতে পাচ্ছি) যেমন বেসলাইনটির জন্য একটি এবং আসল কার্যকালীন সময়কালের জন্য একটি। এরকম কিছু করার কোনও উপায় আছে?
জর্জ ডোনটাস

12

প্যাকেজটিprojmanr ব্যবহার করার কথা বিবেচনা করুন (23 আগস্ট 2017-এ CRAN এ প্রকাশিত সংস্করণ 0.1.0)।

library(projmanr)

# Use raw example data
(data <- taskdata1)

taskdata1:

  id name duration pred
1  1   T1        3     
2  2   T2        4    1
3  3   T3        2    1
4  4   T4        5    2
5  5   T5        1    3
6  6   T6        2    3
7  7   T7        4 4,5 
8  8   T8        3  6,7

এখন গ্যান্ট প্রস্তুত করা শুরু করুন:

# Create a gantt chart using the raw data
gantt(data)

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

# Create a second gantt chart using the processed data
res <- critical_path(data)
gantt(res)

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

# Use raw example data
data <- taskdata1
# Create a network diagram chart using the raw data
network_diagram(data)

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

# Create a second network diagram using the processed data
res <- critical_path(data)
network_diagram(res)

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



7

প্যাকেজটি planবোরডাউন চার্ট এবং গ্যান্ট ডায়াগ্রাম তৈরিতে সহায়তা করে এবং এতে একটি plot.ganttফাংশন রয়েছে । দেখুন এই আর গ্রাফিকাল ম্যানুয়াল পৃষ্ঠা

প্লটলি এর আর এপিআই গ্যান্ট চার্টস প্লটলি ব্যবহার করে কীভাবে আর এ তৈরি করতে হয় তা দেখুন ।


এটি বেশ ভাল কাজ করে এবং মানিয়ে নেওয়া সহজ। আমি সময় জুড়ে প্রসারিত ইভেন্টগুলি যুক্ত করতে একটি সামান্য ফাংশন লিখেছি: gist.github.com/crsh/4f9ce67f408611bc3974
ক্রিশ

5

আপনি গুগলিস প্যাকেজ দিয়ে এটি করতে পারেন :

datTL <- data.frame(Position=c(rep("President", 3), rep("Vice", 3)),
                    Name=c("Washington", "Adams", "Jefferson",
                           "Adams", "Jefferson", "Burr"),
                    start=as.Date(x=rep(c("1789-03-29", "1797-02-03", 
                                          "1801-02-03"),2)),
                    end=as.Date(x=rep(c("1797-02-03", "1801-02-03", 
                                        "1809-02-03"),2)))

Timeline <- gvisTimeline(data=datTL, 
                         rowlabel="Name",
                         barlabel="Position",
                         start="start", 
                         end="end",
                         options=list(timeline="{groupByRowLabel:false}",
                                      backgroundColor='#ffd', 
                                      height=350,
                                      colors="['#cbb69d', '#603913', '#c69c6e']"))
plot(Timeline)

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

উত্স: https://cran.r-project.org/web/packages/googleVis/vignettes/googleVis_exferences.html


4

আমি রিচি থেকে উপরের উদাহরণটি ব্যবহার করেছি এবং সংশোধন করেছি, মোহন এর মতো কাজ করেছি। তার মডেল কীভাবে ম্যানুয়ালি সরবরাহ করা পাঠ্য আইটেমের চেয়ে সিএসভি ডেটা ইনজেস্টিংয়ে অনুবাদ করতে পারে তা দেখানোর জন্য সংশোধিত সংস্করণ।

দ্রষ্টব্য : রিচির উত্তরে ইঙ্গিতটি অনুপস্থিত ছিল যে উপরের / নীচের কোডটি কাজ করার জন্য 2 টি প্যাকেজ ( পুনঃ আকারggplot2 ) প্রয়োজন।

rawschedule <- read.csv("sample.csv", header = TRUE) #modify the "sample.csv" to be the name of your file target. - Make sure you have headers of: Task, Start, Finish, Critical OR modify the below to reflect column count.
tasks <- c(t(rawschedule["Task"]))
dfr <- data.frame(
name        = factor(tasks, levels = tasks),
start.date  = c(rawschedule["Start"]),
end.date    = c(rawschedule["Finish"]),
is.critical = c(rawschedule["Critical"]))
mdfr <- melt(dfr, measure.vars = c("Start", "Finish"))


#generates the plot
ggplot(mdfr, aes(as.Date(value, "%m/%d/%Y"), name, colour = Critical)) + 
geom_line(size = 6) +
xlab("Duration") + ylab("Tasks") +
theme_bw()

3

এখানে একটি পোস্ট যা আমি গ্যান্ট চার্টের মতো কিছু উত্পন্ন করতে ggplot ব্যবহার করে লিখেছিলাম। খুব পরিশীলিত নয়, তবে আপনাকে কিছু ধারণা দিতে পারে।


ধন্যবাদ, এটি সত্যই কার্যকর
স্ল্যাকলাইন

3

আমার জন্য, জিভিসটাইমলাইন এটি করার সেরা সরঞ্জাম ছিল তবে এর প্রয়োজনীয় অনলাইন সংযোগটি আমার পক্ষে কার্যকর ছিল না। এইভাবে আমি একটি প্যাকেজ তৈরি করেছি vistimeযা ব্যবহার করে plotly(@ স্টিভেন বিউপ্রির উত্তরের সমান), যাতে আপনি ইত্যাদি জুম করতে পারেন .:

https://github.com/shosaco/vistime

vistime: প্লটলি.জেএস ব্যবহার করে ইন্টারেক্টিভ টাইমলাইন বা গ্যান্ট চার্ট তৈরি করুন। চার্টগুলি চকচকে অ্যাপ্লিকেশনগুলিতে অন্তর্ভুক্ত করা যেতে পারে এবং প্লট_বিল্ড () এর মাধ্যমে ম্যানিপুলেট করা যেতে পারে।

install.packages("vistime")    
library("vistime")  

dat <- data.frame(Position=c(rep("President", 3), rep("Vice", 3)),
              Name = c("Washington", "Adams", "Jefferson", "Adams", "Jefferson", "Burr"),
              start = rep(c("1789-03-29", "1797-02-03", "1801-02-03"), 2),
              end = rep(c("1797-02-03", "1801-02-03", "1809-02-03"), 2),
              color = c('#cbb69d', '#603913', '#c69c6e'),
              fontcolor = rep("white", 3))

vistime(dat, events="Position", groups="Name", title="Presidents of the USA")

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


3

খুব পুরানো প্রশ্ন, আমি জানি, তবে সম্ভবত এখানে রেখে যাওয়া উপযুক্ত যে - আমি এই প্রশ্নের যে উত্তর পেয়েছি তা নিয়ে অসন্তুষ্ট - কয়েক মাস আগে আমি জিপিপ্লাট 2 -ভিত্তিক গ্যান্ট চার্ট তৈরির জন্য একটি বেসিক প্যাকেজ তৈরি করেছি: গ্যান্ট্রিফাই (প্যাকেজের রেডমে আরও বিশদ) ।

উদাহরণ আউটপুট: এখানে চিত্র বর্ণনা লিখুন


2

লাইব্রেরি প্লটপ্রজ নেট নেটওয়ার্কগুলি প্রকল্প পরিচালনার জন্য দরকারী নেটওয়ার্কিং সরঞ্জাম সরবরাহ করে।

library(PlotPrjNetworks)
project1=data.frame(
task=c("Market Research","Concept Development","Viability Test",
"Preliminary Design","Process Design","Prototyping","Market Testing","Final Design",
"Launching"),
start=c("2015-07-05","2015-07-05","2015-08-05","2015-10-05","2015-10-05","2016-02-18",
"2016-03-18","2016-05-18","2016-07-18"),
end=c("2015-08-05","2015-08-05","2015-10-05","2016-01-05","2016-02-18","2016-03-18",
"2016-05-18","2016-07-18","2016-09-18"))
project2=data.frame(
from=c(1,2,3,4,5,6,7,8),
to=c(2,3,4,5,6,7,8,9),
type=c("SS","FS","FS","SS","FS","FS","FS","FS"),
delay=c(7,7,7,8,10,10,10,10))
GanttChart(project1,project2)

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


ধন্যবাদ এই জন্য @George সেখান থেকে এবং করার জন্য ব্যবহার কর্ম 'নাম একটি উপায় আছে কি? আমি একটি নতুন প্রশ্ন যেমন পোষ্ট দেব? ডক উপর ভিত্তি করে github.com/cran/PlotPrjNetworks/blob/master/R/PlotPrjNetworks.R থেকে এবং পূর্ণসংখ্যা হওয়া উচিত, এটির জন্য কি কোনও দ্রুত সমাধান রয়েছে?
মোহসেন শিহানী

1

আমি প্রতিটি কাজের জন্য বেশ কয়েকটি বার দিয়ে জিপিপ্লট-উত্তরটি উন্নত করতে চাই।

প্রথমে কিছু ডেটা উত্পন্ন করুন (ডিএফআরপি হ'ল অন্য উত্তরের ডেটা ফ্রেম, ডিফআরআর হ'ল কিছু অন্যান্য ডেটা ফ্রেম যা উপলব্ধির তারিখ এবং এমডিএফআর হ'ল নিম্নলিখিত জিজিপ্লট () - বিবৃতিতে একত্রীকরণ ফিটিং):

library(reshape2)
tasks <- c("Review literature", "Mung data", "Stats analysis", "Write Report")
dfrP <- data.frame(
  name        = factor(tasks, levels = tasks),
  start.date  = as.Date(c("2010-08-24", "2010-10-01", "2010-11-01", "2011-02-14")),
  end.date    = as.Date(c("2010-10-31", "2010-12-14", "2011-02-28", "2011-04-30")),
  is.critical = c(TRUE, FALSE, FALSE, TRUE)
)
dfrR <- data.frame(
  name        = factor(tasks, levels = tasks),
  start.date  = as.Date(c("2010-08-22", "2010-10-10", "2010-11-01", NA)),
  end.date    = as.Date(c("2010-11-03", "2010-12-22", "2011-02-24", NA)),
  is.critical = c(TRUE, FALSE, FALSE,TRUE)
)
mdfr <- merge(data.frame(type="Plan", melt(dfrP, measure.vars = c("start.date", "end.date"))),
  data.frame(type="Real", melt(dfrR, measure.vars = c("start.date", "end.date"))), all=T)

এখন টাস্ক নামের জন্য ফেসবুক ব্যবহার করে এই ডেটা প্লট করুন:

library(ggplot2)
ggplot(mdfr, aes(x=value, y=type, color=is.critical))+
  geom_line(size=6)+
  facet_grid(name ~ .) +
  scale_y_discrete(limits=c("Real", "Plan")) +
  xlab(NULL) + ylab(NULL)

আইসক্রিটিক্যাল-তথ্য ব্যতীত আপনি প্ল্যান / রিয়েলকে রঙ হিসাবে ব্যবহার করতে পারেন (যা আমি পছন্দ করব), তবে আমি আরও উত্তরের তুলনামূলক করতে অন্য উত্তরের ডেটা ফ্রেম ব্যবহার করতে চেয়েছিলাম।


1

জিগপ্লাট-এ জিওম_সেগমেন্টটি দুর্দান্ত। পূর্ববর্তী সমাধানগুলি থেকে ডেটা ব্যবহার করুন তবে গলে যাওয়ার দরকার নেই।

library(ggplot2)

tasks <- c("Review literature", "Mung data", "Stats analysis", "Write Report")
dfr <- data.frame(
  name        = factor(tasks, levels = tasks),
  start.date  = as.Date(c("2010-08-24", "2010-10-01", "2010-11-01", "2011-02-14")),
  end.date    = as.Date(c("2010-10-31", "2010-12-14", "2011-02-28", "2011-04-30")),
  is.critical = c(TRUE, FALSE, FALSE, TRUE)
)

ggplot(dfr, aes(x =start.date, xend= end.date, y=name, yend = name, color=is.critical)) +
  geom_segment(size = 6) +
  xlab(NULL) + ylab(NULL)

গ্যান্টপ্লট


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