【发布时间】:2022-01-15 21:47:04
【问题描述】:
我在一个名为“sample1.dat”的文件中有一个三列数据,以及一个读取这些列并尝试绘制第三列与第二列的代码的代码。我从第一列元素中提取参数值,只要它们的值保持不变。
“sample1.dat”读取
0 1 1
0 2 4
0 3 9
0 4 16
0 5 25
0 6 36
1 1 1
1 2 8
1 3 27
1 4 64
1 5 125
1 6 216
2 1 1
2 2 16
2 3 81
2 4 256
2 5 625
2 6 1296
还有我的代码:
import matplotlib.pyplot as plt
import numpy as np
data = np.loadtxt('sample1.dat')
x = data[:,0]
y = data[:,1]
z = data[:,2]
L = len(data)
col = ['r','g','b']
x0 = x[0]; j=0; jold=-1
for i in range(L):
print('j, col[j]=',j, col[j])
if x[i] == x0:
print('y[i], z[i]=',y[i],z[i])
if i==0 or j != jold: # j-index decides new or the same paramet
label = 'parameter = {}'.format(x0)
else:
label = ''
print('label =',label)
plt.plot(y[i], z[i], color=col[j], marker='o', label=label)
else:
x0 = x[i] # Update when x-value changes,
# i.e. pick up the next parameter value
i -= 1 # Shift back else we miss the 1st point for new x-value
j += 1; jold = j
plt.legend()
plt.xlabel('2nd column')
plt.ylabel('3rd column')
plt.savefig('sample1.png')
plt.show()
剧情结局:
可以清楚地看到两个问题仍然存在:
-
虽然我试图避免在我的代码中重复出现,但图例仅出现在第一个参数中。
-
虽然图例显示线加标记图,但默认线型未出现。
我该如何解决这些问题,或者是否有更聪明的编码方式来实现相同的目的。
【问题讨论】:
标签: python python-3.x matplotlib plot