bbb-status/src/langfingaz/plotMeetings.py

63 lines
2.1 KiB
Python
Raw Normal View History

2020-11-28 21:11:21 +01:00
from pathlib import Path
from typing import List
import numpy
2020-11-28 21:11:21 +01:00
import matplotlib.pyplot as plt # TODO
from datetime import datetime
from langfingaz import loadData
from langfingaz import parseMeetings
from langfingaz.parseMeetings import BbbStatus, Meeting
from langfingaz.util import fileUtil
def getDefaultPlotFolder() -> Path:
return fileUtil.getProjectBaseDir().joinpath("plot")
def plotMeetings(dataDir: Path = fileUtil.getProjectBaseDir().joinpath("data")):
2020-11-28 21:11:21 +01:00
bbbStati: List[BbbStatus] = []
for file in dataDir.iterdir():
2020-11-28 21:11:21 +01:00
if file.name.endswith(".xml"):
dataStr, t = loadData.loadData(file)
meetings: List[Meeting] = parseMeetings.parseMeetingsData(dataStr)
bbbStati.append(parseMeetings.BbbStatus(meetings, t))
image: Path = doPlotMeetings(bbbStati)
print("saved image at " + str(image))
2020-11-28 21:11:21 +01:00
def doPlotMeetings(bbbStati: List[BbbStatus]) -> Path:
time = [] # x-axis: time
participants = [] # yAxis (1)
videos = [] # yAxis (2)
voices = [] # yAxis (3)
2020-11-28 21:11:21 +01:00
for bbbStatus in bbbStati:
time.append(bbbStatus.pointOfTime)
participants.append(bbbStatus.participantCount)
videos.append(bbbStatus.videoCount)
voices.append(bbbStatus.voiceParticipantCount)
# Note that even in the OO-style, we use `.pyplot.figure` to create the figure.
fig, ax = plt.subplots() # Create a figure and an axes.
ax.plot(time, participants, label='participants') # Plot some data on the axes.
ax.plot(time, videos, label='video') # Plot more data on the axes...
ax.plot(time, voices, label='voice') # ... and some more.
ax.set_xlabel('time') # Add an x-label to the axes.
ax.set_ylabel('numbers') # Add a y-label to the axes.
ax.set_title("BigBlueButton Statistics") # Add a title to the axes.
ax.legend() # Add a legend.
image: Path = getDefaultPlotFolder().joinpath(
"{}_until_{}".format(fileUtil.asString(time[0]), fileUtil.asString(time[-1]))
)
fig.savefig(image)
# plt.show()
return image
2020-11-28 21:11:21 +01:00
if __name__ == '__main__':
plotMeetings()