def generate_plot_file(self):

			'''
			Step One: analyse the build task
			'''
			#filter tasks by given type wanted
			#build_tasks_unsorted = Task.filter_task_in_by_type(self._build_tasks_all,self.task_type)
			
			#get a task list that cost max time cost
			task_list = TaskDependency.create_critical_dependency_line(self._build_tasks_all, self._build_task_dependencies)
			'''
			Step Two: filter tasks and sort tasks
			'''
			time_threshold = max(1.0, self._timefilter ) # time threshold must be at least 1.0 second
			#filter tasks by given time_threshold
			build_tasks_unsorted = Task.filter_task_by_time(self._build_tasks_all,time_threshold,task_list)
			#sort it with time start
			build_tasks = sorted(build_tasks_unsorted, key=lambda build_task: build_task.start)
			'''
			Step Three: draw the build task
			'''
			# Collect task type and task name from build tasks
			task_types, task_names = self.make_task_names_and_types(build_tasks)
			# Set color for each task type
			color_task = self.make_task_color(task_types)
			# Set indices to tasks
			task_map = dict(itertools.izip(task_names, itertools.count(1)))
			# Make task_rectangles in the coordinates axis
			(task_rectangles,task_arrows) = self.make_task_rectangles_and_dependency_path(build_tasks,task_list, task_map, color_task)
			# Make Task label between  task_rectangle in the coordinates axis
			task_labels = self.make_labels(build_tasks, task_map)
		   
			# Generate png gnuplot commands
			plot_png = self.generate_plot_png(self._png_file,len(task_rectangles) * self._single_task_row_height)
			plot_coord = self.generate_plot_coord(self._title, build_tasks, task_names, task_map)
			plot_rectangles = self.generate_plot_rectangle(task_rectangles)
			plot_arrows = self.generate_plot_arrow(task_arrows)
			plot_labels = self.generate_plot_label(task_labels)
			plot_lines = self.generate_plot_line()
			plot_output = self.generate_plot_output()
			# Save plot file and generate png 
			return self.save_file(self._outputfile,plot_png, plot_coord, plot_rectangles, plot_arrows, plot_labels, plot_lines,plot_output)