Я пытаюсь построить две линии с разными шкалами с matplotlib. В настоящее время работает, за исключением случаев, когда я запускаю свой код, вторая ось Y беспорядочна при обновлении.clear ax2 in matplotlib
Вот код, я использую:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from matplotlib.pyplot import cm
from datetime import datetime
import numpy as np
import matplotlib.animation as animation
def animate(i, fig, ax):
# Converter function
datefunc = lambda x: mdates.date2num(datetime.strptime(x, '%d-%m-%Y_%H:%M:%S'))
# Read data from 'file.dat'
dates, levels, temp = np.genfromtxt('datosPlot.txt', # Data to be read
converters={0: datefunc}, # Formatting of column 0
dtype=float, # All values are floats
usecols=(0,1,2), #Leer las tres primeras columnas de datos.txt
unpack=True) # Unpack to several variables
# Configure x-ticks
ax1.clear()
ax1.set_xticks(dates) # Tickmark + label at every plotted point
ax1.xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%Y %H:%M'))
ax2 = ax1.twinx()
fig.tight_layout()
fig = plt.figure()
ax1 = fig.add_subplot(111)
ani = animation.FuncAnimation(fig, animate, fargs=(fig, ax1), interval=1000)
plt.show()
Мои данные (datosPlot.txt
) выглядит следующим образом:
14-01-2017_14:01:16 1 16
14-01-2017_14:01:19 14 22
14-01-2017_14:01:22 2 17
14-01-2017_14:01:25 4 19
14-01-2017_14:01:28 6 24
14-01-2017_14:01:31 12 19
14-01-2017_14:01:34 4 18
14-01-2017_14:01:37 9 20
Первый столбец является осью X (date_time), второй столбец pH , третья колонка - Температура.
Я пытался добавить ax2.clear()
до и после звонка ax2 = ax1.twinx()
, но он не работает. Как я могу его очистить, поскольку я могу с ax1
?
Вот как это выглядит, когда я не добавляйте ax2.clear()
:
Вы должны добавить фиктивные данные в сценарий примера вместо чтения из '' datosPlot.txt'', который у вас нет, кроме вас. Также удалите все форматирование по оси x, так как это, вероятно, не связано. См. Http://stackoverflow.com/help/mcve для получения дополнительной информации –
также, почему параметр 'ax1' является вашей функцией, когда вы никогда не используете его? возможно, как 'ax1', так и' ax2' должны быть параметрами вашей функции, и функция не должна нести ответственность за их создание. –
Я добавил некоторые фиктивные данные, как вы предложили, @PaulH, также я удалил ненужную информацию. О вашем втором комментарии, я не уверен, что понимаю. Насколько мне известно, «ax1» и «ax2» необходимы для построения обеих линий (pH и темп) с их собственными масштабами (слева и справа от graph) – Ramirous