pyqt5+matplotlib繪製動態雙y軸曲線
import sys
import time
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QMainWindow, QApplication, QGridLayout
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
from matplotlib.lines import Line2D
import matplotlib
import numpy as np
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 解決座標軸中文顯示問題
matplotlib.rcParams['axes.unicode_minus'] = False # 解決負號不顯示的問題
class Figure_Canvas(FigureCanvas):
"""
建立畫板類
"""
def __init__(self, width=3.2, height=2.7):
self.fig = Figure(figsize=(width, height), dpi=70)
super(Figure_Canvas, self).__init__(self.fig)
self.ax = self.fig.add_subplot(111) # 111 表示 1 行 1 列,第一張曲線圖
def add_line(self, x_data, y_data, y2_data=None):
self.line = Line2D(x_data, y_data) # 繪製 2D 折線圖
# ------------------ 調整折線圖基本樣式 ---------------------#
# self.line.set_ls('--') # 設定連線
# self.line.set_marker('*') # 設定每個點
# self.line.set_color('red') # 設定線條顏色
self.ax.grid(True) # 新增網格
self.ax.set_title('外匯跟單gendan5.com 動態曲線 ') # 設定標題
# 設定 xy 軸最大最小值 , 找到 x_data, y_data 最大最小值
self.ax.set_xlim(np.min(x_data), np.max(x_data))
self.ax.set_ylim(np.min(y_data), np.max(y_data) + 2) # y 軸稍微多一點,會好看一點
self.ax.set_xlabel('x 座標 ') # 設定座標名稱
self.ax.set_ylabel('y 座標 ')
# 在曲線下方填充顏色
# self.ax.fill_between(x_data, y_data, color='g', alpha=0.1)
# self.ax.legend([self.line], ['sinx']) # 新增圖例
# ------------------------------------------------------#
self.ax.add_line(self.line)
# 繪製第二條曲線
self.line2 = Line2D(x_data, y2_data)
self.ax.add_line(self.line2)
self.line2.set_color('red') # 設定線條顏色
self.ax.legend([self.line, self.line2], ['sinx', 'cosx']) # 新增圖例
self.ax2 = self.ax.twinx()
self.ax2.set_ylabel('y2 座標 ')
class linewidget(QMainWindow):
def __init__(self):
super(linewidget, self).__init__()
self.setWindowTitle(' 繪製動態曲線 ')
self.resize(1000, 800)
# 建立一個 groupbox, 用來畫動態曲線
self.groupBox = QtWidgets.QGroupBox(self)
self.groupBox.setGeometry(QtCore.QRect(100, 200, 800, 300))
self.load_line() # 載入動態曲線
# 建立定時器,使曲線圖動態更新
self.timer = QTimer()
self.timer.start(10)
self.ts = time.time()
self.timer.timeout.connect(self.Updatedata)
def load_line(self):
self.LineFigure = Figure_Canvas()
self.LineFigureLayout = QGridLayout(self.groupBox)
self.LineFigureLayout.addWidget(self.LineFigure)
# 準備資料,繪製曲線
x_data = np.arange(-4, 4, 0.02)
y_data = np.sin(x_data)
y2_data = np.cos(x_data)
self.LineFigure.add_line(x_data, y_data, y2_data)
def Updatedata(self):
dt = time.time() - self.ts
x_data = np.arange(-4, 4, 0.02)
z_data = np.sin(x_data + dt) # 準備動態資料
h_data = np.cos(x_data + dt)
self.LineFigure.line.set_ydata(z_data) # 更新資料
self.LineFigure.line2.set_ydata(h_data)
self.LineFigure.draw() # 重新畫圖
if __name__ == '__main__':
app = QApplication(sys.argv)
mainMindow = linewidget()
mainMindow.show()
sys.exit(app.exec_())
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2768030/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 繪製雙Y軸圖
- Python實現雙X軸雙Y軸繪圖Python繪圖
- Kitten 動態繪製 Y 軸方向立方體的實現方法
- python 繪製雙y軸,將折線加粗並在折線上做標記Python
- Origin2024如何製作雙Y軸圖?
- canvas繪製sin正弦曲線Canvas
- canvas 繪製雙線技巧Canvas
- ROC曲線繪製與AUC計算
- 解析csv資料繪製曲線圖
- Chart.js繪製動態折線圖JS
- Origin教程:DSC曲線的描述和繪製
- ggplot2中繪圖設定x軸、y軸名稱距離框線的距離繪圖
- 時間軸、流程類時間軸繪製
- flutter 自定義view 繪製曲線統計圖FlutterView
- MPAndroidChart繪製曲線圖、柱狀圖總結Android
- excel折線圖自定x軸y軸 excel做xy軸座標圖Excel
- R語言中繪圖不輸出x軸或者y軸的刻度標籤R語言繪圖
- excel折線圖自定x軸y軸 excel折線圖xy設定Excel
- WPF隨筆收錄-實時繪製心率曲線
- webGL入門-四階貝塞爾曲線繪製Web
- caffe的python介面繪製loss和accuracy曲線示例Python
- 函式的遞迴及科赫曲線繪製函式遞迴
- 【Matlab 控制】模仿繪製動態影像Matlab
- 基於 matplotlib 的抽象網格和能量曲線繪製程式抽象
- WPF開發隨筆收錄-心電圖曲線繪製
- Android日常學習:OpenGL 實踐之貝塞爾曲線繪製Android
- R語言ggsurvplot繪製生存曲線報錯 : object of type ‘symbol‘ is not subsettableR語言ObjectSymbol
- 2020研究生數模整理(2):plotly雙座標軸繪製多個軌跡
- ECharts,付費求教,有人能繪製出文中的 曲線圖表嘛!Echarts
- CAD繪製單雙開門
- 基於react的錄音及音訊曲線繪製的元件開發React音訊元件
- jQuery和CSS3繪製動態笑臉jQueryCSSS3
- canvas繪製直線Canvas
- SVG 繪製直線SVG
- canvas 繪製線條Canvas
- Python Pandas 時間序列雙軸折線圖Python
- 測量圓線圈軸線上的磁場分佈曲線 (資料版)
- python-科研繪圖系列(6)-深度模型準確率,誤差收斂曲線圖;雙座標繪圖;雙座標圖例放置在一個框中;帶95%置信區間的曲線圖Python繪圖模型