猫史档案馆


【Python作品分享】图表分析软件【教程贴】

用户:可爱的小番茄可爱的小番茄查看:1 回复:1 评论:1 创建时间:2020-04-25T21:04:56


【作品展示】

center_image

 

【作品介绍】

需要下载pyecharts 0.5.11哦!否则程序会报错哦!

 

【作品源代码】

# 首先要下载pyecharts 0.5.11,否则程序会报错哦!
import os
import sys
from PySide2.QtWidgets import *
from PySide2.QtCore import QUrl
from PySide2.QtWebEngineWidgets import QWebEngineView
import json
from pyecharts import Bar, Line, Pie
from PySide2.QtCore import (QCoreApplication, QMetaObject, QObject, QPoint,QRect, QSize, QUrl, Qt)
from PySide2.QtGui import (QBrush, QColor, QConicalGradient, QCursor, QFont,QFontDatabase, QIcon, QLinearGradient, QPalette, QPainter, QPixmap,QRadialGradient)


class Ui_Charts(object):
    def setupUi(self, charts):
        if charts.objectName():
            charts.setObjectName(u"charts")
        charts.resize(797, 598)
        font = QFont()
        font.setPointSize(15)
        charts.setFont(font)
        self.centralwidget = QWidget(charts)
        self.centralwidget.setObjectName(u"centralwidget")
        self.lb_title = QLabel(self.centralwidget)
        self.lb_title.setObjectName(u"lb_title")
        self.lb_title.setGeometry(QRect(320, 30, 131, 41))
        font1 = QFont()
        font1.setFamily(u"Arial")
        font1.setPointSize(16)
        font1.setBold(True)
        font1.setWeight(75)
        self.lb_title.setFont(font1)
        self.lb_title.setMouseTracking(False)
        self.lb_title.setTabletTracking(False)
        self.verticalLayoutWidget = QWidget(self.centralwidget)
        self.verticalLayoutWidget.setObjectName(u"verticalLayoutWidget")
        self.verticalLayoutWidget.setGeometry(QRect(40, 160, 711, 391))
        self.vl_chart = QVBoxLayout(self.verticalLayoutWidget)
        self.vl_chart.setObjectName(u"vl_chart")
        self.vl_chart.setContentsMargins(0, 0, 0, 0)
        self.widget = QWidget(self.centralwidget)
        self.widget.setObjectName(u"widget")
        self.widget.setGeometry(QRect(40, 110, 711, 31))
        self.horizontalLayout = QHBoxLayout(self.widget)
        self.horizontalLayout.setObjectName(u"horizontalLayout")
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.pbtn_data = QPushButton(self.widget)
        self.pbtn_data.setObjectName(u"pbtn_data")
        font2 = QFont()
        font2.setPointSize(9)
        self.pbtn_data.setFont(font2)

        self.horizontalLayout.addWidget(self.pbtn_data)

        self.cb_chart_list = QComboBox(self.widget)
        self.cb_chart_list.addItem("")
        self.cb_chart_list.addItem("")
        self.cb_chart_list.addItem("")
        self.cb_chart_list.setObjectName(u"cb_chart_list")
        self.cb_chart_list.setFont(font2)

        self.horizontalLayout.addWidget(self.cb_chart_list)

        self.horizontalSpacer = QSpacerItem(
            40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)

        self.horizontalLayout.addItem(self.horizontalSpacer)

        self.lb_info = QLabel(self.widget)
        self.lb_info.setObjectName(u"lb_info")

        self.horizontalLayout.addWidget(self.lb_info)

        charts.setCentralWidget(self.centralwidget)

        self.retranslateUi(charts)

        QMetaObject.connectSlotsByName(charts)
    # setupUi

    def retranslateUi(self, charts):
        charts.setWindowTitle(QCoreApplication.translate(
            "charts", u"\u56fe\u8868\u5206\u6790\u8f6f\u4ef6", None))
        self.lb_title.setText(QCoreApplication.translate(
            "charts", u"\u6211\u7684\u6570\u636e\u56fe\u8868", None))
        self.pbtn_data.setText(QCoreApplication.translate(
            "charts", u"\u9009\u62e9\u6587\u4ef6", None))
        self.cb_chart_list.setItemText(0, QCoreApplication.translate(
            "charts", u"\u6298\u7ebf\u56fe", None))
        self.cb_chart_list.setItemText(1, QCoreApplication.translate(
            "charts", u"\u67f1\u7喵6\u56fe", None))
        self.cb_chart_list.setItemText(2, QCoreApplication.translate(
            "charts", u"\u997c\u7喵6\u56fe", None))

        self.lb_info.setText(QCoreApplication.translate(
            "charts", u"\u8bf7\u5148\u9009\u62e9\u6587\u4ef6\u2026\u2026", None))
    # retranslateUi
    

class MyCharts(QMainWindow, Ui_Charts):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.init_set()
        self.show()
        self.pbtn_data.clicked.connect(self.select_file)
        self.cb_chart_list.currentIndexChanged.connect(self.plot)

    def init_set(self):
        self.broser = QWebEngineView()
        self.vl_chart.addWidget(self.broser)

    def select_file(self):
        self.data_file, _ = QFileDialog.getOpenFileName(
            caption='选择数据文件', filter='(*.json)')
        self.lb_info.setText(self.data_file)
        self.plot()

    def plot(self):
        index_text = self.cb_chart_list.currentText()
        if self.data_file:
            plots(self.data_file, index_text)
            self.broser.load(QUrl.fromLocalFile(
                os.path.realpath('render.html')))


def plots(data_file, type):

    with open(data_file) as f:
        data = json.load(f)

    attr = data['attr']
    value = data['value']

    if type == '柱状图':
        chart = Bar('柱状图数据')
    elif type == '折线图':
        chart = Line('折线图数据')
    elif type == '饼状图':
        chart = Pie("饼状图数据")

    chart.add(type, attr, value)
    chart.render()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MyCharts()
    sys.exit(app.exec_())

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
TobylaiTobylai

...上课的...

另外,你的样式不大对

点赞0


评论