2013-08-05 3 views
2

Как возможно использовать matplotlib для построения графика с этими данными. Проблема состоит в том, чтобы визуализировать расстояние от столбца 2 до столбца 3. В конце он должен выглядеть как график времени gant.Создать gantt Участок с python matplotlib

0 0 0.016 19.833 
1 0 19.834 52.805 
2 0 52.806 84.005 
5 0 84.012 107.305 
8 0 107.315 128.998 
10 0 129.005 138.956 
11 0 138.961 145.587 
13 0 145.594 163.863 
15 0 163.872 192.118 
16 0 192.127 193.787 
17 0 193.796 197.106 
20 0 236.099 246.223 
25 1 31.096 56.180 
27 1 58.097 64.857 
28 1 64.858 66.494 
29 1 66.496 89.908 
31 1 89.918 111.606 
34 1 129.007 137.371 
35 1 137.372 145.727 
39 1 176.097 209.461 
42 1 209.476 226.207 
44 1 226.217 259.317 
46 1 259.329 282.488 
47 1 282.493 298.905 

мне нужно 2 цвета для столбца 1. А для оси у выбран столбец 0, для оси х колонка 2 и 3 имеют важное значение. Для каждой строки должна быть построена строка. столбец 2 - время начала, а столбец 3 - время остановки.

+0

Что вы пробовали? Здесь вы получите гораздо лучшие ответы, если вы покажете нам, что вы пробовали, поскольку вы ставите вопрос, теперь он читается как «пожалуйста, сделайте мою работу для меня». – tacaswell

+0

Я новичок, ты прав. Но я пытался много раз рисовать. Построение не было проблемой, но дизайн ганта был. И для дизайна gantt, нет доступных экзаменов. – Thor

+0

Тогда, по крайней мере, покажите нам _anything_, чтобы показать, что вы пробовали и как отправную точку. – tacaswell

ответ

12

Если вы правильно поняли, вы хотите построить горизонтальную линию между значениями х 3-го и 4-го столбцов с y-значением, равным значению в столбце 0. Чтобы построить горизонтальную линию при заданном y- значение между двумя значениями x, вы можете использовать hlines. Я считаю, что приведенный ниже код является возможным решением.

import numpy as np 
import matplotlib.pyplot as plt 

# Read data from file into variables 
y, c, x1, x2 = np.loadtxt('data.txt', unpack=True) 

# Map value to color 
color_mapper = np.vectorize(lambda x: {0: 'red', 1: 'blue'}.get(x)) 

# Plot a line for every line of data in your file 
plt.hlines(y, x1, x2, colors=color_mapper(c)) 

The resulting output

+0

Это очень похоже на диаграмму Ганта. Если вам нужна дополнительная боль, например, обучение LaTeX, попробуйте [LaTeX pgfgantt] (http://www.ctan.org/pkg/pgfgantt). – Sven

+0

Хороший пакет, но не гибкий с большими числами. С данными> 300 он не подходит для одной страницы. После масштабирования поля tex с помощью \ noindent \ resizebox {\ textwidth} {!} Невозможно прочитать метку оси. – Thor

1

Вы можете прочитать текстовый файл, используя, например, numpy.loadtxt, а затем построить его с помощью matplotlib. Например:

Для получения дополнительных сведений вы должны увидеть matplotlib documentation.

+0

У меня уже есть данные на Python. Столбец 2+ 3 находится на оси x, как и на временной шкале. Столбец 0 - ось y – Thor

Смежные вопросы