pyechart库介绍及简单使用
一、概述
1.背景
数据可视化作为提高用户对数据的理解程度,创新架构,增进体验的重要一环,一向富有表现力的Python语言应当可以发挥更大作用,优秀的pyechart第三方库即在这样的背景下诞生。
2.介绍
Echarts是一个由百度开源的商业级数据图表,它是一个纯JavaScript的图表库,可以为用户提供直观生动,可交互,可高度个性化定制的数据可视化图表,赋予了用户对数据进行挖掘整合的能力。
我们即可定义:pyecharts库是一个用于生成 Echarts 图表的类库,,直接生成html图形,可以接入网站使用
3.安装
# 安装 v1 以上版本 $ pip install pyecharts -U
二、基本语法
1.柱形图绘制
from pyecharts import options as opts from pyecharts.charts import Bar, Page from pyecharts.globals import ThemeType def bar_base_dict_config() -> Bar: c = ( Bar({"theme": ThemeType.MACARONS}) .add_xaxis(["吃喝", "杂物", "交通", "书费", "游玩", "花呗", "网购"]) .add_yaxis("旁友A", [600, 20,30, 50, 100, 125, 200]) .add_yaxis("旁友B", [650,25,25, 80, 150, 145, 100]) .set_global_opts( title_opts={"text": "同学们的生活开支", "subtext": "通过 dict 进行配置"} ) ) return c bar_base_dict_config().render()
2.折线图绘制
import pyecharts.options as opts from pyecharts.charts import Line def line_base() -> Line: attr = ["10.13", "10.14", "10.15", "10.16" , "10.17" , "\ 10.18"] v1 = [1650, 1700, 1461, 1350, 1100, 1500] v2 = [1020, 575, 400, 350, 330, 480] c = ( Line() .add_xaxis(attr) .add_yaxis("成都fly北京", v1) .add_yaxis("成都fly昆明", v2) .set_global_opts(title_opts=opts.TitleOpts(title="航班价格折线图")) ) return c m=line_base() m.render()
3.饼图绘制
from pyecharts import options as opts from pyecharts.charts import Pie from pyecharts.faker import Collector, Faker def pie_set_colors() -> Pie: c = ( Pie() .add("", [list(z) for z in zip(['上课','睡眠','餐饮','娱乐','聊天学习','健身'], [4,8,3,3,2,1])]) .set_colors(["blue", "green", "yellow", "red", "pink","orange"]) .set_global_opts(title_opts=opts.TitleOpts(title="这一天天的")) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")) ) return c pie_set_colors().render()
PyQt5的用法
##################################################################################################################################################################
1.matplotlib+PyQt5实现图形
#coding=utf-8 #author='Shichao-Dong' import sys import random import matplotlib matplotlib.use("Qt5Agg") from PyQt5 import QtCore from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QSizePolicy, QWidget from numpy import arange, sin, pi from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar from matplotlib.figure import Figure import matplotlib.pyplot as plt class MyMplCanvas(FigureCanvas): """FigureCanvas的最终的父类其实是QWidget。""" def __init__(self, parent=None, width=5, height=4, dpi=100): # 配置中文显示 plt.rcParams['font.family'] = ['SimHei'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 self.fig = plt.figure(figsize=(width, height), dpi=dpi) # 新建一个figure self.axes = self.fig.add_subplot(311) # 建立一个子图,如果要建立复合图,可以在这里修改 self.axes1 = self.fig.add_subplot(312) self.axes2 = self.fig.add_subplot(313) #self.axes.hold(False) # 每次绘图的时候不保留上一次绘图的结果 #self.axes1.hold(False) FigureCanvas.__init__(self, self.fig) self.setParent(parent) '''定义FigureCanvas的尺寸策略,这部分的意思是设置FigureCanvas,使之尽可能的向外填充空间。''' FigureCanvas.setSizePolicy(self, QSizePolicy.Expanding, QSizePolicy.Expanding) FigureCanvas.updateGeometry(self) '''绘制静态图,可以在这里定义自己的绘图逻辑''' def start_static_plot(self): self.fig.suptitle('性能监测图') self.axes.plot([562,269,562,256,431,651,328,385]) self.axes.set_ylabel('mem占用:k') self.axes.grid(True) self.axes1.plot([0.9,16.5,12.3,25.6,31.86,18.5],'y') self.axes1.set_ylabel('cpu占用:%') self.axes1.grid(True) # flow = adb.getflow() self.axes2.plot([500,962,635,895],'b',[523,779,465,831],'r') self.axes2.set_ylabel('流量使用:k') self.axes2.set_xlabel('蓝色下载,红色上传') self.axes2.grid(True) '''启动绘制动态图''' def start_dynamic_plot(self, *args, **kwargs): timer = QtCore.QTimer(self) timer.timeout.connect(self.update_figure) # 每隔一段时间就会触发一次update_figure函数。 timer.start(1000) # 触发的时间间隔为1秒。 '''动态图的绘图逻辑可以在这里修改''' def update_figure(self): self.fig.suptitle('测试动态图') l = [random.randint(0, 10) for i in range(4)] self.axes.plot([0, 1, 2, 3], l, 'r') self.axes.set_ylabel('动态图:Y轴') self.axes.set_xlabel('动态图:X轴') self.axes.grid(True) self.draw() class MatplotlibWidget(QWidget): def __init__(self, parent=None): super(MatplotlibWidget, self).__init__(parent) self.initUi() def initUi(self): self.layout = QVBoxLayout(self) self.mpl = MyMplCanvas(self, width=5, height=4, dpi=100) #self.mpl.start_static_plot() # 如果你想要初始化的时候就呈现静态图,请把这行注释去掉 #self.mpl.start_dynamic_plot() # 如果你想要初始化的时候就呈现动态图,请把这行注释去掉 self.mpl_ntb = NavigationToolbar(self.mpl, self) # 添加完整的 toolbar self.layout.addWidget(self.mpl) # self.layout.addWidget(self.mpl_ntb) if __name__ == '__main__': for i in range(10): app = QApplication(sys.argv) ui = MatplotlibWidget() ui.mpl.start_static_plot() # 测试静态图效果 #ui.mpl.start_dynamic_plot() # 测试动态图效果 ui.show() sys.exit(app.exec_())
相关链接:
https://blog.csdn.net/mr_songw/article/details/124238291 ........................................................matplotlib 绘制图形 ,,matplotilb使用
浙公网安备 33010602011771号