Сгруппированный график в python (matplotlib.pyplot) - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть следующая таблица в результате запроса SQL:

SYS|LOCKED|UNLOCKED|
 A |   2  |  3     |
 B |   1  |  2     |
 C |   4  |  1     |

Это результат запроса SQL, который помещается в кадр данных pandas, и я хотел бы превратить его в сгруппированную диаграммугде X = SYS и Y = первый столбец с номерами LOCKED, а второй столбец с элементами UNLOCKED.Пока это код, но он пропускает код сюжета.Есть идеи?

import pyodbc
import os
import sys
import pandas as pd
import matplotlib.pyplot as plt

with open('serv1.txt', 'r') as servfile:
    serv = servfile.read()

with open('datab1.txt', 'r') as databfile:
    datab = databfile.read()

print(serv)
print(datab)
cnxn = pyodbc.connect('Trusted_Connection=yes', driver = '{ODBC Driver 13 for SQL Server}',server = serv, database = datab)
print(cnxn)
SQL_Query = pd.read_sql_query("""select SYS,
                                   sum(case when LOCK_STAT = 'Locked' then 1 else 0 end) as LOCKED,
                                   sum(case when LOCK_STAT = 'Unlocked' then 1 else 0 end) as UNLOCKED
                                from dbo.USR_02_ALL_RAW
                                group by SYS;""")
df = pd.DataFrame(SQL_Query, columns=['SYS', 'LOCKED','UNLOCKED'])

С этого момента я не уверен насчет кода.SQL-запрос создает таблицу, как указано выше, но я не уверен, как поместить в сгруппированную диаграмму, где Y имеет два бара для каждой группы (SYS по оси X).

Есть идеи?

1 Ответ

1 голос
/ 19 сентября 2019

Используйте set_index и pd.DataFrame.plot.bar

MCVE:

Где df,

   SYS  LOCKED  UNLOCKED
0   A        2         3
1   B        1         2
2   C        4         1

Тогда,

df.set_index('SYS').plot.bar()

Выход:

enter image description here

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