Значения по оси Y положительные и отрицательные - все выше нуля?!.

АлексХотянович

Новичок
Пользователь
Авг 29, 2023
20
1
1
Друзья!
Приветствую!
Вот такая простая задача - построить точечный график.
Значения g1S - размещаются на оси Х.
Координата Y для этих точек равна нулю.
Ниже создаются список из 47-ми значений, равных нулю.

Далее от g2S отнимаем g1S и полученное значение это координата Y нового точечного графика, для которого координата X - это значения g1S.

Все работает, строятся графики.
Но почему-то и положительные и отрицательные значения Y разместились выше нуля.
Прошу помочь словом и кодом.
Графики хотелось, чтобы имели такой вид

1696791854608.png

Спасибо!

Python:
import numpy as np
import matplotlib.pyplot as plt

g1S = ['285', '279', '265', '258', '250', '253', '256', '248', '247', '233', '235', '222', '217', '206', '199', '203', '188', '176', '163', '163', '184', '183', '160', '167', '157', '153', '137', '133', '126', '126', '118', '113', '108', '98', '85', '389', '375', '371', '364', '358', '353', '348', '325', '323', '328', '298', '289']
g2S = ['265', '262', '257', '248', '243', '239', '239', '236', '230', '230', '228', '215', '210', '203', '198', '196', '187', '174', '167', '0', '176', '176', '157', '156', '154', '150', '136', '134', '131', '129', '126', '114', '109', '107', '104', '375', '360', '360', '349', '341', '338', '334', '332', '309', '308', '298', '0']

g1S1=""
nL = 0
iL = 1
y0 = ""

while iL < 47 + 1:
    y0 += "0"
    iL += 1
y2 = list(y0)
#--------------------
diff2 = ""
diff3 = ""

for g1I, g2I in zip(g1S, g2S):
    num1 = int(g1I)
    num2 = int(g2I)
    if num2 == 0:
        num2 = num1

    diff = num2 - num1
    diff1 = str(diff)
    diff2 = str(diff2 + " " + str(diff1))
    diff3 = diff2.split()

diff4 = list(diff3)

y = np.array(y2)
x = np.array(g1S)

xX = np.array(g1S)
yY = np.array(diff4)

plt.scatter(x, y)
plt.scatter(xX, yY)
plt.show()
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
График по точкам не очень похож на тот, что вы показали, но это похоже из-за значений в массивах g2S и g1S.

Python:
import numpy as np
import matplotlib.pyplot as plt

g1S = ['285', '279', '265', '258', '250', '253', '256', '248', '247', '233', '235', '222', '217', '206', '199', '203',
       '188', '176', '163', '163', '184', '183', '160', '167', '157', '153', '137', '133', '126', '126', '118', '113',
       '108', '98', '85', '389', '375', '371', '364', '358', '353', '348', '325', '323', '328', '298', '289']
g2S = ['265', '262', '257', '248', '243', '239', '239', '236', '230', '230', '228', '215', '210', '203', '198', '196',
       '187', '174', '167', '0', '176', '176', '157', '156', '154', '150', '136', '134', '131', '129', '126', '114',
       '109', '107', '104', '375', '360', '360', '349', '341', '338', '334', '332', '309', '308', '298', '0']

g1s = np.array(list(map(int, g1S)))
g2S = np.array(list(map(int, g2S)))

plt.scatter(g1S, np.zeros(47))
plt.scatter(g1S, g2S - g1s)
plt.xticks(rotation=90)
plt.grid(axis='y')
plt.show()
 

АлексХотянович

Новичок
Пользователь
Авг 29, 2023
20
1
1
Спасибо!
Попробую разобраться.
 

АлексХотянович

Новичок
Пользователь
Авг 29, 2023
20
1
1
Все выглядит перспективно!
Спасибо!
В продолжение еще один вопрос
Можно ли и как, чтобы значения в переменной g1S распределились по возрастанию и в переменной g2S также случилась перестановка, но были бы сохранены соответствующие парные значения?
Спасибо!
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
Можно ли и как, чтобы значения в переменной g1S распределились по возрастанию и в переменной g2S также случилась перестановка, но были бы сохранены соответствующие парные значения?
Легко и просто
Python:
import numpy as np
import matplotlib.pyplot as plt

g1S = ['285', '279', '265', '258', '250', '253', '256', '248', '247', '233', '235', '222', '217', '206', '199', '203',
       '188', '176', '163', '163', '184', '183', '160', '167', '157', '153', '137', '133', '126', '126', '118', '113',
       '108', '98', '85', '389', '375', '371', '364', '358', '353', '348', '325', '323', '328', '298', '289']
g2S = ['265', '262', '257', '248', '243', '239', '239', '236', '230', '230', '228', '215', '210', '203', '198', '196',
       '187', '174', '167', '0', '176', '176', '157', '156', '154', '150', '136', '134', '131', '129', '126', '114',
       '109', '107', '104', '375', '360', '360', '349', '341', '338', '334', '332', '309', '308', '298', '0']

g1S = list(map(int, g1S))
g1S_sorted = np.sort(g1S)
g2S = list(map(int, g2S))
g2S_sorted = np.array([g2S[g1S.index(i)] for i in g1S_sorted])

plt.scatter(g2S_sorted, np.zeros(47))
plt.scatter(g1S_sorted, g2S_sorted - g1S_sorted)
plt.xticks(rotation=90)
plt.grid(axis='y')
plt.show()
 
  • Мне нравится
Реакции: robisho

АлексХотянович

Новичок
Пользователь
Авг 29, 2023
20
1
1
Большое спасибо!
 

Форум IT Специалистов