Построение нескольких строк на одном рисунке из Matplotlib

#python #matplotlib

#python #matplotlib

Вопрос:

После получения дат и значений из моей базы данных я хочу отобразить это с помощью двух строк, одна из которых представляет pure_results, а другая — applied_results. Я хочу отобразить эти даты на одном и том же рисунке.

Я попытался отобразить данные на одном и том же рисунке, и это немного сработало, используя приведенный ниже код.

У меня есть две таблицы, в которых я получаю time_stamp, которая является датой, вместе с SUM (правильной), которая является значением, которое я отображаю, а затем ГРУППИРУЮ ПО time_stamp, в результате чего повторяющиеся даты объединяются в одну и сортируют данные (в два разных списка).

 def correct_graphs(user_id):
    dates_pure = []
    correct_pure = []
    dates_applied = []
    correct_applied = []
    sql_pure = "SELECT time_stamp,SUM(Correct) FROM pure_results WHERE user_id = ? GROUP BY time_stamp"
    sql_applied = "SELECT time_stamp, SUM(Correct) FROM applied_results WHERE user_id = ? GROUP BY time_stamp"
    cursor.execute(sql_pure, [(user_id)])
    for a in cursor.fetchall():
        dates_pure.append(a[0])
        correct_pure.append(a[1])
    cursor.execute(sql_applied, [(user_id)])
    for b in cursor.fetchall():
        dates_applied.append(b[0])
        correct_applied.append(b[1])
    plt.plot(dates_pure, correct_pure, label="Pure Progess")
    plt.plot(dates_applied, correct_applied, label="Applied Progess")
    plt.xlabel("Dates of Maths Question Attempted")
    plt.ylabel("Questions Correct")
    plt.title("Comparsion of Correct Progess")
    plt.legend()
    plt.show()

  

Однако после того, как некоторые даты изменились в двух таблицах, я ожидал, что выходные данные будут отображаться по оси x в порядке даты, однако мой фактический результат — график matplotlib

Пример данных :

 dates_pure = ['2019-03-25', '2019-03-26', '2019-03-30', '2019-04-02', '2019-04-03']
correct_pure = [4, 6, 5, 6, 8]
dates_applied= ['2019-03-25', '2019-03-26', '2019-03-27', '2019-03-30', '2019-04-05']
correct_applied = [6, 3, 4, 10, 5]
  

Мне нужен способ объединения двух списков и сортировки их в хронологическом порядке, чтобы зафиксировать ось x, а затем иметь возможность отображать pure_results и applied_results в виде двух отдельных строк или иметь возможность отображать две строки одновременно

Комментарии:

1. вам необходимо отсортировать значения перед построением

2. Кажется, есть дублированная дата для 2019-03-30. Почему это так? Возможно, вам нужно будет сгруппировать их. Однако не уверен, нужно ли вам среднее значение или сумма. Иначе ваши данные не упорядочены

3. Я думаю, вам нужно немного лучше указать свой вопрос и, возможно, отсортировать значения, как сказал Макарош

4. Даты указаны в порядке в отдельных списках, но при построении они не в порядке, и если я сортирую списки вместе, я не могу правильно отобразить две строки. Если я упорядочил данные в одном списке, я не могу правильно отобразить значения.