使用matplotlib在单个图上绘制三个数据集

时间:2014-08-27 10:08:12

标签: python matplotlib plot

我仍在使用python,所以如果这是一个非常简单的问题,请道歉。

我有一个包含5列的输出文件,如下所示:

Depth Data#1 Data#2 Data#3 Standard_deviation

这些列包含500个值,如果这有任何不同。

我想要做的只是简单地绘制数据#1,数据#2和数据#3(在x轴上)与深度(在y轴上)。我希望数据#1为蓝色,数据#2和数据#3为红色

我想要的无花果是(14,6)。

我不希望在此处绘制包含标准偏差的列。如果它更简单,我可以简单地从输出中删除该列。

提前感谢您的帮助!

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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会导致删除图中所有多余的白色边界。

答案 2 :(得分: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()