2014-08-27 3 views
0

Я все еще получаю свои ноги с питоном, поэтому извиняюсь, если это очень простой вопрос.Построение трех наборов данных на одном участке с использованием matplotlib

У меня есть выходной файл, который содержит 5 столбцов, следующим образом:

Depth Data#1 Data#2 Data#3 Standard_deviation 

Эти столбцы содержат значения 500, если это делает никакой разницы.

То, что я пытаюсь сделать, это просто данные об изображении # 1, данные # 2 и данные # 3 (по оси x) относительно глубины (по оси y). Я хотел бы, чтобы данные # 1 были синими, а данные # 2 и данные № 3 для каждого были красными.

Фиксиз, который мне нужен, это (14,6).

Я не хочу, чтобы колонка, содержащая стандартное отклонение, была построена здесь. Если это проще, я могу просто удалить этот столбец из вывода.

Заранее благодарим за любую помощь!

ответ

1

его matplotlibs основа:

import pylab as pl 

data = pl.loadtxt("myfile.txt") 

pl.figure(figsize=(14,6)) 
pl.plot(data[:,1], data[:,0], "b") 
pl.plot(data[:,2], data[:,0], "r") 
pl.plot(data[:,3], data[:,0], "r") 

pl.show() 
+0

Благодарим вас за ответ. Это выглядит очень просто. – Vlad

+1

Пропущено 'as pl' из' import' ... – will

+0

Я запустил этот скрипт, и он работает хорошо. У меня есть следующий вопрос, если все в порядке? Есть ли простой способ инвертировать ось y, так что 0 находится сверху, а самое высокое значение находится внизу? – Vlad

2

С почти все с Matplotlib, как я идти об этом, если я не знаю, как сделать это уже, это просто сканировать через Gallery, чтобы найти что-то, похожее на то, что я хочу сделать, а затем изменить уже существующий код.

Это один имеет большинство из того, что вы хотите в нем:

enter image description here

http://matplotlib.org/examples/style_sheets/plot_fivethirtyeight.html

""" 
This shows an example of the "fivethirtyeight" styling, which 
tries to replicate the styles from FiveThirtyEight.com. 
""" 


from matplotlib import pyplot as plt 
import numpy as np 

x = np.linspace(0, 10) 

with plt.style.context('fivethirtyeight'): 
    plt.plot(x, np.sin(x) + x + np.random.randn(50)) 
    plt.plot(x, np.sin(x) + 0.5 * x + np.random.randn(50)) 
    plt.plot(x, np.sin(x) + 2 * x + np.random.randn(50)) 


plt.show() 

Это, к сожалению, груз лишних вещей в нем вы не хотите, но часть, которую вы должны забрать, состоит в том, что plt.plot(...) можно просто вызвать несколько раз, чтобы построить несколько строк.

Тогда это всего лишь случай применения этого;

from matplotlib import pyplot  

#Make some data 
depth = range(500) 
allData = zip(*[[x, 2*x, 3*x] for x in depth]) 

#Set out colours 
colours = ["blue", "red", "red"] 


for data, colour in zip(allData, colours): 
    pyplot.plot(depth, data, color=colour) 

pyplot.show() 

enter image description here

+0

+1 сканирование через галерею также мой первый шаг :) – dnalow

+0

Спасибо за ваш ответ. Я даже не знал, что галерея существует, но отныне буду откладывать ее. Ура! – Vlad

+1

Я нахожу, что галерея действительно полезна, как. я никогда не буду беспокоиться о том, чтобы помнить матрицу плагина matplotlib, поэтому я почти всегда буду воспринимать это на примере или предыдущем материале, который я написал (я обычно перехожу со своим другим материалом, так как я * очень предпочитаю подход matplotlib OO к нему functionatl matlab style.) и b. он довольно часто получает новые вещи, добавленные к нему, о которых вы, возможно, не знали. – will

1

Поскольку вопрос только касается черчения я предполагаю, что вы знаете, как прочитать данные из файла. Что касается заговоров, что вам нужно, это следующие:

import matplotlib.pyplot as plt 

#Create a figure with a certain size 
plt.figure(figsize = (14, 6)) 

#Plot x versus y 
plt.plot(data1, depth, color = "blue") 
plt.plot(data2, depth, color = "red") 
plt.plot(data3, depth, color = "red") 

#Save the figure 
plt.savefig("figure.png", dpi = 300, bbox_inches = "tight") 

#Show the figure 
plt.show() 

Опции bbox_inches = "tight" в savefig результатах при удалении всех избыточные белых границ фигуры.

+0

Благодарим вас за ответ. Это очень полезно. – Vlad

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