我需要在python例程中创建一个我称之为“合成点”的东西。
我有一系列介于-1和1之间的数据,但是,当我将这些数据放在图表上时,它们形成了梯形图。 我想做的是创建相同的x轴值,可以取两个y轴值的点,然后创建带有以下内容的图表: 直线组成“矩形图”
我拥有的格式数据的示例:
0;-1
1;-1
2;-1
3;-1
4;-1
5;-1
6;-1
7;1
8;1
9;1
10;1
11;1
12;1
13;1
14;1
15;1
16;-1
17;-1
18;-1
19;-1
20;-1
例如,在这种情况下,我需要数据采用以下格式:
0;-1
1;-1
2;-1
3;-1
4;-1
5;-1
6;-1
6;1 (point 6 with two values)
7;1
8;1
9;1
10;1
11;1
12;1
13;1
14;1
15;1
15;-1 (point 15 with two values)
16;-1
17;-1
18;-1
19;-1
20;-1
因此,您需要做的是,总是在我进行值更改时,这将创造一个新的观点。这使图形成为矩形,因为y变量的唯一可能值为-1和1。
我需要输入的代码如下。接下来要做的只是将输入数据设置为-1和1格式。
arq = open('vazdif.out', 'rt')
list = []
i = 0
for row in arq:
field = row.split(';')
vaz = float(field[2])
if vaz < 0:
list.append("-1")
elif vaz > 0:
list.append("1")
n = len(list)
fou = open('res_id.out','wt')
for i in range(n):
fou.write('{};{}\n'.format(i,list[i]))
fou.close
谢谢您的帮助
P.s。英语不是我的母语,请原谅我在书写或代码上的错误。
答案 0 :(得分:0)
我添加了一个新值prev_value
,如果先前的值是相反的符号(乘以当前值<0),则会在列表中添加一个额外的索引。
我认为field[1]
和field[2]
可能是错误的,但我相信到目前为止,您的代码仍然有效。与fou
类似,我将替换为with open ...
arq = open('vazdif.out', 'rt')
list = []
i = 0
prev_value = 0
for row in arq:
field = row.split(';')
xxx = int(field[1])
vaz = float(field[2])
if vaz * prev_value < 0:
list.append([list[-1][0], - list[-1][1]])
if vaz < 0:
list.append([xxx, -1])
else:
list.append([xxx, 1])
prev_val = vaz
fou = open('res_id.out','wt')
for i in list:
fou.write(f'{i[0]};{i[1]}\n')
fou.close