Python Plot-多个绘图中的数据

时间:2018-06-15 09:34:18

标签: python python-3.x matplotlib math math.sqrt

我正在从文本文件中读取数据但是当我这样做时,我需要在绘图函数中多次使用3*sqrt(col1) = x1.append(3*math.sqrt(float(p[1])))这样的值。在绘图之前我怎样才能有多个列号数据?例如,我将通过3 * sqrt(col3)和绘制该数据之后的多个col3数据。

#-------input.dat---------
#   x        y     z
# col 1    col 2  col 3
# 3          5      5
# 5          6      4
# 7          7      3
import matplotlib.pyplot as plt
import numpy as np
import pylab as pl
import math

data = open('input.dat')
lines = data.readlines()
data.close()
x1=[]
y1=[]
z1=[]
plt.plot(1)
for line in lines[2:]:
p= line.split()
x1.append(3*math.sqrt(float(p[1])))
y1.append(3*math.sqrt(float(p[2])))
z1.append(3*math.sqrt(float(p[3])))
x=np.array(x1)
y=np.array(y1)
z=np.array(z1)
plt.subplot(311)
plt.plot(x,'b',label=" X figure ")
plt.subplot(312)
plt.plot(y,'r',label=" Y figure ")
plt.subplot(313)
plt.plot(x,z,'g',label=" X,Z figure ")
plt.show()

1 个答案:

答案 0 :(得分:2)

同样,如果您从一开始就使用ADS_set.h:428:42: error: type/value mismatch at argument 1 in template parameter list for ‘template<class _T1, class _T2> struct std::pair’ std::pair<ADS_set<Key, N>::Iterator, bool> ADS_set<Key, N>::next_idx(Bucket &bkt, const_reference key, bool split) { ^ ADS_set.h:428:42: note: expected a type, got ‘ADS_set<Key, N>::Iterator’ ADS_set.h:428:44: error: prototype for ‘int ADS_set<Key, N>::next_idx(ADS_set<Key, N>::Bucket&, ADS_set<Key, N>::const_reference, bool)’ does not match any in class ‘ADS_set<Key, N>’ std::pair<ADS_set<Key, N>::Iterator, bool> ADS_set<Key, N>::next_idx(Bucket &bkt, const_reference key, bool split) { 数组,这会更容易。

通过阅读我向您展示的数据in your last question,您的数据已经在numpy数组中。然后,您可以使用numpy.sqrt函数在数组上按元素执行平方根操作。

numpy

enter image description here

但是,如果您真的想坚持使用旧代码,可以通过

修复
  1. 修复缩进

  2. 将索引更改为#-------input.dat--------- # x y z # col 1 col 2 col 3 # 3 5 5 # 5 6 4 # 7 7 3 import matplotlib.pyplot as plt import numpy as np data = np.genfromtxt('input.dat', skip_header=2) x = 3. * np.sqrt(data[:, 0]) y = 3. * np.sqrt(data[:, 1]) z = 3. * np.sqrt(data[:, 2]) plt.subplot(311) plt.plot(x, 'b', label=" X figure ") plt.subplot(312) plt.plot(y, 'r', label=" Y figure ") plt.subplot(313) plt.plot(x, z, 'g', label=" X,Z figure ") plt.show() p[0]p[1](而不是p[2]p[1]p[2]

  3. 此代码生成与上面相同的图:

    p[3]