Построение трех баз данных в одном графе Python - PullRequest
0 голосов
/ 20 июня 2019

Как мне построить график

  • Получение данных из этих 3 источников

  • Используя только первую букву и последние цифры первойстолбец, чтобы поместить его по оси X, как на графике Excel выше

  • Как можно показать данные первого столбца только с разницей в 20 цифр?aa010 aa030 aa050 ... и т. д.

У меня есть три разных данных из источника.Каждый из них имеет 2 столбца.Некоторые из первых трех столбцов этих источников названы одинаково, но каждому из них соответствуют разные данные во втором столбце.

Мне нужно использовать python, чтобы отобразить эти 3 данные на одном графике.

Ось X должна быть комбинацией первого столбца из трех данных из источников.- Данные в формате: aa001 - (иногда до aa400);ab001 - (иногда до ab400).

Итак, ось X должна начинаться с aa001 и заканчиваться на ab400.Так как это просто переполнило бы ось X и сделало бы невозможным смотреть на него в нормальном размере, я хочу просто показать aa020, aa040 ..... (используя число в строке, показывать только после aa0 (+20) или ab0 (+20))

Ось Y должна быть просто числами от 0 до 10000 (может потребоваться изменить, если хотя бы одно из данных имеет максимум более 10000.

Я добавлю образец графика, который я создал, используя Excel.

Мой пример данных будет (Примечание: данные не отсортированы по любому столбцу, и я бы предпочел отсортировать их, как указано выше: aa001 ...... ab400):

Данные1

Имя Номер

aa001 123

aa032 4211

ab400 1241

ab33133


Данные2

Имя Номер

aa002 1213

aa032 41

ab378 4231

ab33163

aa163 999


Data3

Имя Номер

aa209 9876

ab132 5432

ab3784124

aa031 754

aa378 44

ab344 1346

aa222 73

aa163 414

ab331 61

Я искал Matplotlib, нашел образецпример, где он строится так, как я хочу (с точками для каждой точки xy), но не относится к моему вопросу.

Это аналогичный код, который я нашел:

x = range(100)
y = range(100,200)
fig = plt.figure()
ax1 = fig.add_subplot(111)

ax1.scatter(x[:4], y[:4], s=10, c='b', marker="s", label='first')
ax1.scatter(x[40:],y[40:], s=10, c='r', marker="o", label='second')
plt.legend(loc='upper left');
plt.show()

Пример графика (вместоаа для оси X-> bc;ab -> mc)

Я ожидаю увидеть график следующим образом, но пропускаю каждые 20 по оси X.(Я хочу, чтобы первый график был пунктирным (обозначен символом) в качестве второго графика, но второй график должен использовать ось X в качестве первого графика, но с пропуском 20 в имени

Первый график ->- Я хочу использовать ось Х, как это, но без каждых данных (только на 20 разностей)

Второй график -> - Я хочу использовать символы вместо линий, как в этом

Пожалуйста, дайте мне знать, если мне нужно предоставить какую-либо другую информацию или уточнить / исправить себя. Любая помощь приветствуется!

1 Ответ

0 голосов
/ 24 июня 2019

Ответ следующий, но в следующем коде все еще есть ошибки.Окончательный ответ будет опубликован после получения полного ответа по адресу. Ответ будет по следующей ссылке: Использование отсортированного файла для построения оси X с соответствующими значениями Y из исходного файла

from matplotlib import pyplot as plt
import numpy as np
import csv

csv_file = []
with open('hostnum.csv', 'r') as f:
    csvreader = csv.reader(f)
    for line in csvreader:
        csv_file.append(line)

us_csv_file = []
with open('unsorted.csv', 'r') as f:
    csvreader = csv.reader(f)
    for line in csvreader:
        us_csv_file.append(line)
us_csv_file.sort(key=lambda x: csv_list.index(x[1]))

plt.plot([int(item[1]) for item in csvfile], 'o-')
plt.xticks(np.arange(len(csvfile)), [item[0] for item in csvfile])

plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...