-
Notifications
You must be signed in to change notification settings - Fork 1
/
multiple_year_vs_cnt.py
80 lines (59 loc) · 2.51 KB
/
multiple_year_vs_cnt.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# -*- coding: utf-8 -*-
"""
Created on Sun Oct 30 19:19:45 2022
@author: arman hossain
!pip install gensim==3.8.3
!python multiple_year_vs_cnt.py
"""
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
import sys
from PyQt5.QtChart import QChart, QChartView, QSplineSeries
from PyQt5.QtGui import QPainter
from PyQt5.QtCore import Qt
import pickle
import os
class Window(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.chart = QChart()
self.setWindowTitle("Vendor wise Year Versus Number of Published Vulnerabilities")
self.setGeometry(100,100, 680,500)
if os.path.exists('./data/2002-2022-vendor-year-count.pickle'):
self.read_data("./data/2002-2022-vendor-year-count.pickle")
chartview = QChartView(self.chart)
chartview.setRenderHint(QPainter.Antialiasing)
vbox = QVBoxLayout()
vbox.setContentsMargins(0,0,0,0)
vbox.addWidget(chartview)
self.setLayout(vbox)
def read_data(self,filename):
with open(filename, 'rb') as file:
obj = pickle.load(file)
self.data = obj
def info(self,obj):
for attr in dir(obj):
print(attr,"(",type(getattr(obj,attr)).__name__,")")
def add_linechart(self,name):
# print(self.data.keys())
series = QSplineSeries()
first = True
for key in self.data[name].keys():
if self.data[name][key]==0 and first: continue
first = False
series.append(key,self.data[name][key])
series.setName(name)
self.chart.addSeries(series)
self.chart.createDefaultAxes()
self.chart.setAnimationOptions(QChart.SeriesAnimations)
self.chart.setTitle("Vendor wise Year Versus Number of Published Vulnerabilities")
self.chart.legend().setVisible(True)
self.chart.legend().setAlignment(Qt.AlignBottom)
if __name__ == "__main__":
# top vendors ['qualcomm', 'cisco', 'microsoft', 'apple', 'linux', 'intel', 'mozilla', 'adobe', 'oracle', 'ibm', 'google', 'sun', 'juniper', 'f5', 'hp', 'redhat', 'huawei', 'opera', 'apache', 'netgear', 'php', 'debian', 'vmware', 'siemens', 'canonical', 'dell', 'lenovo', 'zohocorp', 'netapp', 'amd', 'moodle']
App = QApplication(sys.argv)
window = Window()
window.add_linechart("microsoft")
window.add_linechart("google")
window.add_linechart("cisco")
window.show()
sys.exit(App.exec_())