Здравствуйте, у меня есть несколько значений для построения графика, которые имеют одинаковую ось x (время), но несколько значений y (температура, влажность и т. Д. c). Я сделал этот код. Я не могу получить шкалу оси Y справа и в хорошей форме (теперь есть перекрывающиеся шкалы y, поэтому вы не можете видеть, какие значения у вас есть для каждого значения). Мне нужен график, который имеет ту же ось, но столбцы y находятся справа, и вы можете понять его значения, поэтому проблемы - это столбцы y, которые не очень хорошо показаны. Как я могу это исправить? Это проблема https://i.imgur.com/G1EiYIh.png, поскольку вы можете видеть, что столбец y не в хорошем состоянии, он тоже перекрывается
import serial
import time
import matplotlib.pyplot as plt
import numpy as np
from drawnow import *
arduinoData = serial.Serial('/dev/ttyACM0',9600)
time.sleep(2)
data_temperature = [] # empty list to store the data
data_luminosity = []
data_thermistor = []
data_umidity = []
plt.ion()
counter = 0
def makePlot():
plt.ylim(15,35)
plt.title('Real Time Data')
plt.grid(True)
plt.ylabel('Temperature')
plt.plot(data_temperature, 'ro-', label = 'Temperature')
plt.tick_params(direction='right')
plt.legend(loc='upper left')
plt2 = plt.twinx()
plt2.plot(data_umidity, 'bo-', label = 'Umidity %')
plt2.legend(loc= 'upper right')
plt3 = plt.twinx()
plt3.plot(data_thermistor, 'go-', label = 'Thermistor temperature')
plt3.legend(loc = 'lower left')
while True:
if arduinoData.inWaiting()==0:
pass
time.sleep(5)
arduinoString = arduinoData.readline() # read a byte string
arrayData = arduinoString.split()
luminosity = float(arrayData[0])
thermistorTemperature = float(arrayData[1])
temperature = float(arrayData[2])
umidity = float(arrayData[3])
print(luminosity, thermistorTemperature, temperature, umidity)
data_temperature.append(temperature)
data_luminosity.append(luminosity)
data_thermistor.append(thermistorTemperature)
data_umidity.append(umidity)
drawnow(makePlot)
plt.pause(.000001)
counter += 1
if counter > 50:
data_temperature.pop(0)
data_umidity.pop(0)
ser.close()