快速學會繪制Pyqt5中的所有圖(下)

Pyqt5相關文章:
快速掌握Pyqt5的三種主窗口
快速掌握Pyqt5的2種彈簧
快速掌握Pyqt5的5種布局
快速弄懂Pyqt5的5種項目視圖(Item View)
快速弄懂Pyqt5的4種項目部件(Item Widget)
快速掌握Pyqt5的6種按鈕
快速掌握Pyqt5的10種容器(Containers)
快速掌握Pyqt5的20種輸入控件(Input Widgets)
快速掌握Pyqt5的9種顯示控件
詳細學習Pyqt5中的5種布局方式
詳細學習Pyqt5中的6種按鈕
詳細學習Pyqt5中的2種彈簧
詳細學習Pyqt5的5種項目視圖(Item View)
詳細學習Pyqt5的4種項目部件(Item Widget)
詳細學習Pyqt5的20種輸入控件(Input Widgets)
詳細學習Pyqt5的9種顯示控件
詳細學習Pyqt5的10種容器(Containers)
詳細學習PyQt5與數據庫交互
詳細學習PyQt5中的多線程
快速學習PyQt5的動畫和圖形效果
快速學習PyQt5的高級自定義控件
快速學會繪制Pyqt5中的所有圖(上)
快速學會繪制Pyqt5中的所有圖(下)
待續。。。

雷達圖

在這里插入圖片描述

PyQtGraph 并不直接支持雷達圖(也稱為蜘蛛網圖或極坐標圖),但您可以使用 PyQt 的繪圖能力手動創建一個。要在 PyQt 中繪制雷達圖,您需要使用 QPainter 類來在 QWidget 或類似對象上進行自定義繪圖。

以下是一個使用 PyQt5 創建簡單雷達圖的示例:

編寫代碼繪制雷達圖:

import sys  
import math  
from PyQt5.QtWidgets import QApplication, QWidget  
from PyQt5.QtGui import QPainter, QPolygon, QPen  
from PyQt5.QtCore import Qt, QPoint  class RadarWidget(QWidget):  def __init__(self, data):  super().__init__()  self.data = data  def paintEvent(self, event):  painter = QPainter(self)  painter.setRenderHint(QPainter.Antialiasing)  # 雷達圖的中心點  center = QPoint(int(self.width() / 2), int(self.height() / 2))  radius = min(int(self.width() / 2), int(self.height() / 2)) - 10  # 繪制雷達圖的軸  num_axes = len(self.data)  for i in range(num_axes):  angle = 2 * math.pi * i / num_axes  x =int( center.x() + radius * math.cos(angle))  y =int( center.y() + radius * math.sin(angle))  painter.drawLine(center, QPoint(x, y))  # 繪制雷達圖的數據多邊形  polygon = QPolygon()  for i in range(num_axes):  angle = 2 * math.pi * i / num_axes  value = self.data[i]  x = int(center.x() + value * radius * math.cos(angle))  y = int(center.y() + value * radius * math.sin(angle))  polygon << QPoint(x, y)  painter.setPen(QPen(Qt.blue, 2))  painter.drawPolygon(polygon)  # 創建一個 QApplication 實例  
app = QApplication(sys.argv)  # 創建雷達圖窗口  
radar_data = [0.7, 0.8, 0.5, 0.6, 0.9]  # 示例數據  
radarWidget = RadarWidget(radar_data)  
radarWidget.resize(400, 400)  
radarWidget.show()  # 啟動應用程序的事件循環  
sys.exit(app.exec_())

在這個例子中,我們創建了一個繼承自 QWidgetRadarWidget 類來顯示雷達圖。數據以列表形式傳遞給 RadarWidget,每個元素表示雷達圖上一個軸的值。

流程圖

在這里插入圖片描述

在 PyQtGraph 中繪制流程圖需要使用圖形和線條來手動創建圖形元素。PyQtGraph 主要專注于數據可視化,并不直接支持流程圖的繪制。但是,您可以使用 PyQt5 的圖形視圖框架(QGraphicsSceneQGraphicsView)來創建流程圖。

以下是使用 PyQt5 創建簡單流程圖的示例代碼:

編寫代碼繪制流程圖:

import sys  
import math  
from PyQt5.QtWidgets import QApplication, QGraphicsScene, QGraphicsView, QGraphicsRectItem, QGraphicsTextItem, QGraphicsLineItem,QGraphicsPolygonItem  
from PyQt5.QtCore import Qt, QRectF, QPointF, QLineF  
from PyQt5.QtGui import QPen, QBrush, QColor, QPolygonF  class Arrow(QGraphicsLineItem):  def __init__(self, start_item, end_item, parent=None):  super().__init__(parent)  # 計算起始點和結束點  start_point = start_item.mapToScene(start_item.rect().bottomLeft() + QPointF(start_item.rect().width() / 2, 0))  end_point = end_item.mapToScene(end_item.rect().topLeft() + QPointF(end_item.rect().width() / 2, 0))  # 設置線條  line = QLineF(start_point, end_point)  self.setLine(line)  self.setPen(QPen(Qt.black, 2))  # 箭頭頭部尺寸  arrow_size = 9.0  # 計算箭頭角度  angle = math.atan2(-line.dy(), line.dx())  # 創建箭頭頭部  arrow_head = QPolygonF()  arrow_head.append(line.p2())  arrow_head.append(line.p2() - QPointF(math.sin(angle + math.pi / 3) * arrow_size,  math.cos(angle + math.pi / 3) * arrow_size))  arrow_head.append(line.p2() - QPointF(math.sin(angle + math.pi - math.pi / 3) * arrow_size,  math.cos(angle + math.pi - math.pi / 3) * arrow_size))  # 添加箭頭頭部到場景  arrow_head_item = QGraphicsPolygonItem(arrow_head, self)  arrow_head_item.setBrush(Qt.black)  arrow_head_item.setPen(QPen(Qt.black, 2))  class FlowChartNode(QGraphicsRectItem):  def __init__(self, text, x, y, width, height, parent=None):  super().__init__(x, y, width, height, parent)  self.setBrush(QBrush(QColor(200, 200, 255)))  self.setPen(QPen(Qt.black, 2))  # 添加文本標簽  text_item = QGraphicsTextItem(text, self)  text_item.setPos(x + 10, y + 10)  text_item.setTextWidth(width - 20)  app = QApplication(sys.argv)  
scene = QGraphicsScene()  node1 = FlowChartNode("開始", 50, 50, 100, 50)  
node2 = FlowChartNode("步驟1", 50, 150, 100, 50)  
node3 = FlowChartNode("結束", 50, 250, 100, 50)  scene.addItem(node1)  
scene.addItem(node2)  
scene.addItem(node3)  arrow1 = Arrow(node1, node2)  
arrow2 = Arrow(node2, node3)  scene.addItem(arrow1)  
scene.addItem(arrow2)  view = QGraphicsView(scene)  
view.show()  sys.exit(app.exec_())

在這個例子中,我們定義了一個 FlowChartNode 類來表示流程圖中的節點,該類繼承自 QGraphicsRectItem。然后,我們創建了一個 QGraphicsScene 來容納這些節點,并使用 QGraphicsView 顯示它們。

樹狀圖

在這里插入圖片描述

在 PyQtGraph 中創建樹狀圖(或樹形結構圖)通常不是直接支持的,因為 PyQtGraph 主要用于數據可視化,如繪制折線圖、散點圖等。但是,您可以使用 PyQt5 的 QTreeViewQStandardItemModel 來創建一個樹狀圖界面。

以下是使用 PyQt5 創建樹狀圖的示例代碼:

編寫代碼以創建樹狀圖:

import sys  
from PyQt5.QtWidgets import QApplication, QTreeView  
from PyQt5.QtGui import QStandardItem, QStandardItemModel  app = QApplication(sys.argv)  # 創建標準項模型  
model = QStandardItemModel()  
rootNode = model.invisibleRootItem()  # 創建節點  
parent1 = QStandardItem('父節點1')  
child1 = QStandardItem('子節點1')  
child2 = QStandardItem('子節點2')  
parent1.appendRow(child1)  
parent1.appendRow(child2)  parent2 = QStandardItem('父節點2')  
child3 = QStandardItem('子節點3')  
parent2.appendRow(child3)  rootNode.appendRow(parent1)  
rootNode.appendRow(parent2)  # 創建樹視圖并設置模型  treeView = QTreeView()  
treeView.setHeaderHidden(True)  treeView.setModel(model)  
treeView.expandAll()  # 展開所有節點  # 顯示樹視圖  
treeView.show()  sys.exit(app.exec_())

在這個例子中,我們創建了一個 QStandardItemModel 來存儲樹形數據,然后向模型中添加了幾個 QStandardItem 作為節點。QTreeView 用于展示這個模型。每個節點都可以有子節點,形成樹形結構。

網絡圖

在這里插入圖片描述

在 PyQtGraph 中直接繪制網絡圖(Graph Visualization)并不直接支持,因為 PyQtGraph 主要用于繪制二維和三維的數據可視化圖形,如折線圖、散點圖等。但是,您可以結合使用 PyQt 和其他 Python 圖形庫,如 NetworkX,來創建和顯示網絡圖。

以下是一個使用 PyQt5 和 NetworkX 創建網絡圖的示例:

編寫代碼以創建網絡圖:

    import sysimport networkx as nximport matplotlib.pyplot as pltfrom PyQt5.QtWidgets import QApplication, QMainWindow, QSizePolicy, QWidget, QVBoxLayoutfrom matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvasclass NetworkGraph(QWidget):def __init__(self, parent=None):super(NetworkGraph, self).__init__(parent)self.figure, self.ax = plt.subplots()self.canvas = FigureCanvas(self.figure)self.canvas.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)self.canvas.updateGeometry()layout = QVBoxLayout()layout.addWidget(self.canvas)self.setLayout(layout)self.draw_graph()def draw_graph(self):# 創建一個網絡圖G = nx.karate_club_graph()# 繪制網絡圖pos = nx.spring_layout(G)nx.draw(G, pos, ax=self.ax, with_labels=True, node_color='skyblue', edge_color='gray')# 更新畫布self.canvas.draw()app = QApplication(sys.argv)mainWindow = QMainWindow()mainWindow.setCentralWidget(NetworkGraph())mainWindow.show()sys.exit(app.exec_())

在這個示例中,我們創建了一個名為 NetworkGraph 的自定義 QWidget,用于顯示由 NetworkX 生成的網絡圖。使用 NetworkX 創建并配置圖形,然后使用 Matplotlib 進行繪圖。最后,將 Matplotlib 圖形嵌入到 PyQt5 應用程序窗口中。

氣泡圖

在這里插入圖片描述

在 PyQtGraph 中繪制氣泡圖可以通過使用 ScatterPlotItem 類并調整點的大小來實現。氣泡圖是散點圖的一種變體,其中每個點的大小可以代表數據的一個額外維度。

以下是使用 PyQtGraph 創建氣泡圖的步驟和示例代碼:

編寫代碼以繪制氣泡圖:

import sys  
import numpy as np  
from PyQt5 import QtWidgets  
import pyqtgraph as pg  # 創建一個應用程序實例  
app = QtWidgets.QApplication(sys.argv)  # 創建一個主窗口  
mainWindow = QtWidgets.QMainWindow()  # 創建一個繪圖控件  
plotWidget = pg.PlotWidget()  
plotWidget.setBackground("w")  
mainWindow.setCentralWidget(plotWidget)  # 準備數據  
x = np.random.rand(100) * 10  
y = np.random.rand(100) * 10  
sizes = np.random.rand(100) * 50  # 氣泡的大小  # 創建散點圖項目  
scatterPlotItem = pg.ScatterPlotItem(pen=pg.mkPen(None), brush="#dcbeff")  # 現在使用 setData 設置點的坐標和大小  
scatterPlotItem.setData(x, y, size=sizes)  # 將散點圖添加到繪圖控件  
plotWidget.addItem(scatterPlotItem)  # 顯示主窗口  
mainWindow.show()  # 啟動應用程序的事件循環  
sys.exit(app.exec_())

在這個例子中,我們使用 ScatterPlotItem 創建了一個散點圖,并通過改變每個點的大小(size 參數)來創建一個氣泡圖效果。xy 是數據點的坐標,sizes 數組決定了每個點的大小。

地圖圖表

在這里插入圖片描述

在 PyQt 中繪制地圖圖表通常需要結合使用地理信息系統(GIS)相關的庫,例如 GeoPandas、Folium 或 PyQGIS。這些庫可以處理地理數據并生成地圖,但是它們不是 PyQtGraph 的一部分。另一種選擇是使用 QGIS,這是一個完整的地理信息系統平臺,它可以與 PyQt 結合使用。

以下是一個使用 Python、PyQt5 和 Folium 創建交互式地圖圖表的基本示例:

編寫代碼以創建地圖圖表:

import sys  
import os  
import folium  
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget  
from PyQt5.QtWebEngineWidgets import QWebEngineView  
from PyQt5.QtCore import QUrl  class MapWidget(QWidget):  def __init__(self, parent=None):  super().__init__(parent)  self.view = QWebEngineView(self)  self.init_ui()  def init_ui(self):  # 創建一個 Folium 地圖,您可以調整 zoom_start 來設置初始縮放級別  m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)  # 獲取當前文件夾的絕對路徑  dirname = os.path.abspath(os.path.dirname(__file__))  # 保存地圖為 HTML 文件  map_path = os.path.join(dirname, 'map.html')  m.save(map_path)  # 在 QWebEngineView 中加載 HTML        self.view.load(QUrl.fromLocalFile(map_path))  # 設置 QWebEngineView 控件的最小尺寸  self.view.setMinimumSize(800, 600)  # 例如,設置為寬800像素,高600像素  self.view.show()  app = QApplication(sys.argv)  
mainWindow = QMainWindow()  
mapWidget = MapWidget()  # 設置主窗口的初始大小  
mainWindow.resize(800, 600)  # 可以根據需要調整這個尺寸  mainWindow.setCentralWidget(mapWidget)  
mainWindow.show()  
sys.exit(app.exec_())

在這個示例中,我們使用 Folium 創建了一個簡單的地圖,并將其保存為一個 HTML 文件。然后我們使用 PyQt5 的 QWebEngineView 小部件加載并顯示這個 HTML 文件,從而在 PyQt 應用程序中嵌入了地圖。

桑基圖

在這里插入圖片描述

桑基圖是一種特殊的流程圖,它用于表示數據流和傳輸。在 PyQtGraph 中直接繪制桑基圖并不支持,因為它主要用于繪制二維和三維的數據可視化圖形,如折線圖、散點圖等。然而,您可以使用其他的Python庫,如 matplotlib,來創建桑基圖,并將其嵌入到 PyQt 應用程序中。

以下是一個使用 Python、PyQt5 和 Matplotlib 創建桑基圖的基本示例:

編寫代碼以創建桑基圖:

    import sysfrom PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidgetfrom matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvasimport matplotlib.pyplot as pltfrom matplotlib.sankey import Sankeyclass SankeyWidget(QWidget):def __init__(self, parent=None):super(SankeyWidget, self).__init__(parent)self.figure, self.ax = plt.subplots()self.canvas = FigureCanvas(self.figure)layout = QVBoxLayout()layout.addWidget(self.canvas)self.setLayout(layout)self.draw_sankey()def draw_sankey(self):# 創建桑基圖sankey = Sankey(ax=self.ax)sankey.add(flows=[1, -1, 0.5, -0.5], labels=['', '', '', ''], orientations=[0, 0, 1, -1])sankey.finish()# 更新畫布self.canvas.draw()app = QApplication(sys.argv)mainWindow = QMainWindow()mainWindow.setCentralWidget(SankeyWidget())mainWindow.show()sys.exit(app.exec_())

在這個示例中,我們定義了一個 SankeyWidget 類來展示桑基圖。使用 Matplotlib 創建桑基圖,并將其嵌入到 PyQt5 應用程序中。

組合圖在這里插入圖片描述

在 PyQtGraph 中創建組合圖(例如,將折線圖和柱狀圖組合在一起)可以通過在同一個繪圖控件(PlotWidget)中添加多個圖表元素來實現。這樣,您可以在同一個坐標軸上或在相互關聯的坐標軸上展示不同類型的數據。

以下是一個示例,展示如何在 PyQtGraph 中創建一個組合了折線圖和柱狀圖的組合圖:

編寫代碼以創建組合圖:

import sys
import numpy as np
from PyQt5 import QtWidgets
import pyqtgraph as pg# 創建一個應用程序實例
app = QtWidgets.QApplication(sys.argv)# 創建一個主窗口
mainWindow = QtWidgets.QMainWindow()# 創建一個繪圖控件
plotWidget = pg.PlotWidget()
plotWidget.setBackground('w')
mainWindow.setCentralWidget(plotWidget)# 準備數據
x = np.arange(10)
y1 = np.random.randint(1, 20, size=10)  # 柱狀圖的數據
y2 = np.random.randint(1, 20, size=10)  # 折線圖的數據# 創建柱狀圖項目
barGraphItem = pg.BarGraphItem(x=x, height=y1, width=0.6, brush='#fffac8')
plotWidget.addItem(barGraphItem)# 創建折線圖項目
plotWidget.plot(x, y2, pen=pg.mkPen(color='#dcbeff', width=2))# 顯示主窗口
mainWindow.show()# 啟動應用程序的事件循環
sys.exit(app.exec_())

在這個示例中,我們首先創建了一個包含柱狀圖和折線圖的 PlotWidgetBarGraphItem 用于柱狀圖,而 plot 方法用于折線圖。通過將它們添加到同一個 PlotWidget 中,我們可以將兩種圖表組合在一起顯示。

股票圖

在這里插入圖片描述

在 PyQtGraph 中繪制股票圖(通常指蠟燭圖或OHLC圖)需要一些額外的步驟,因為這需要特殊的圖表來表示股票的開盤價、最高價、最低價和收盤價。PyQtGraph 提供了 CandlestickItem 類來創建這種類型的圖表。

以下是使用 PyQtGraph 創建股票圖的步驟和示例代碼:

編寫代碼以繪制股票圖:

import sys  
import numpy as np  
from PyQt5 import QtWidgets  
import pyqtgraph as pg  class CandlestickItem(pg.GraphicsObject):  def __init__(self, data):  pg.GraphicsObject.__init__(self)  self.data = data  # data應該是一個包含(open, high, low, close)的列表  self.generatePicture()  def generatePicture(self):  self.picture = pg.QtGui.QPicture()  p = pg.QtGui.QPainter(self.picture)  p.setPen(pg.mkPen('b'))  # 設置蠟燭圖的顏色  w = 0.3  for (t, open, high, low, close) in self.data:  p.drawLine(pg.QtCore.QPointF(t, low), pg.QtCore.QPointF(t, high))  if open > close:  p.setBrush(pg.mkBrush('g'))  else:  p.setBrush(pg.mkBrush('r'))  p.drawRect(pg.QtCore.QRectF(t - w, open, w * 2, close - open))  p.end()  def paint(self, p, *args):  p.drawPicture(0, 0, self.picture)  def boundingRect(self):  return pg.QtCore.QRectF(self.picture.boundingRect())  # 創建一個應用程序實例  
app = QtWidgets.QApplication(sys.argv)  # 創建一個主窗口  
mainWindow = QtWidgets.QMainWindow()  # 創建一個繪圖控件  
plotWidget = pg.PlotWidget()  
plotWidget.setBackground("w")  
mainWindow.setCentralWidget(plotWidget)  # 準備數據  
data = [  # 示例數據:(時間, 開盤價, 最高價, 最低價, 收盤價)  (1, 10, 15, 5, 13),  (2, 13, 20, 10, 15),  (3, 15, 17, 13, 16),  (4, 16, 19, 14, 10),  # ...  
]  # 創建蠟燭圖項目  
item = CandlestickItem(data)  
plotWidget.addItem(item)  # 顯示主窗口  
mainWindow.show()  # 啟動應用程序的事件循環  
sys.exit(app.exec_())

在這個示例中,我們首先定義了一個 CandlestickItem 類來創建股票圖。該類繼承自 GraphicsObject,并且重寫了繪圖方法來繪制蠟燭圖。數據格式是一個元組列表,每個元組代表一個時間點上的開盤價、最高價、最低價和收盤價。

甘特圖

![[Pasted image 20231207235825.png]]

在 PyQtGraph 中創建甘特圖需要一些額外的工作,因為它主要用于繪制二維和三維的數據可視化圖形,如折線圖、散點圖等,而不直接支持甘特圖。但是,您可以使用 PyQt 的基本圖形功能來手動繪制甘特圖。

以下是使用 PyQt5 創建簡單甘特圖的示例代碼:

編寫代碼以創建甘特圖:

import sys  
from PyQt5.QtWidgets import QApplication, QGraphicsScene, QGraphicsView, QGraphicsRectItem, QGraphicsTextItem  
from PyQt5.QtGui import QColor, QPen, QFont  
from PyQt5.QtCore import QRectF  class GanttChartItem(QGraphicsRectItem):  def __init__(self, text, start, duration, row, color, parent=None):  super(GanttChartItem, self).__init__(parent)  # 設置矩形的尺寸和位置  self.setRect(QRectF(start, row * 50, duration, 30))  self.setBrush(QColor(color))  self.setPen(QPen(QColor('black'), 2))  # 添加邊框  # 添加文本標簽  text_item = QGraphicsTextItem(text, self)  text_item.setFont(QFont('Arial', 10))  text_item.setDefaultTextColor(QColor('black'))  text_item.setPos(start + 2, row * 50 + 5)  app = QApplication(sys.argv)  # 創建場景  
scene = QGraphicsScene()  # 創建甘特圖條目  
ganttItem1 = GanttChartItem("項目1", 0, 100, 0, '#78C0A8')  
ganttItem2 = GanttChartItem("項目2", 50, 150, 1, '#F4D35E')  
ganttItem3 = GanttChartItem("項目3", 120, 100, 2, '#EE964B')  # 將條目添加到場景  
scene.addItem(ganttItem1)  
scene.addItem(ganttItem2)  
scene.addItem(ganttItem3)  # 創建視圖  
view = QGraphicsView(scene)  # 設置合適的視圖尺寸  
view.setSceneRect(0, 0, 400, 200)  
view.setMinimumSize(600, 400)  # 設置窗口標題  
view.setWindowTitle("python")  # 顯示視圖窗口  
view.show()  sys.exit(app.exec_())

在這個示例中,我們定義了一個 GanttChartItem 類來表示甘特圖中的單個任務。每個任務在水平方向上表示其持續時間,在垂直方向上表示不同的任務行。QGraphicsScene 用于容納這些任務,而 QGraphicsView 用于顯示它們。

平行坐標圖

![[Pasted image 20231207235854.png]]

在 PyQtGraph 中直接繪制平行坐標圖(Parallel Coordinates)并不直接支持,因為 PyQtGraph 主要用于繪制二維和三維的數據可視化圖形,如折線圖、散點圖等。然而,您可以使用其他的Python庫,如 matplotlibpandas,來創建平行坐標圖,并將其嵌入到 PyQt 應用程序中。

以下是一個使用 Python、PyQt5 和 Matplotlib 創建平行坐標圖的基本示例:

編寫代碼以創建平行坐標圖:

    import sysimport pandas as pdimport matplotlib.pyplot as pltfrom PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidgetfrom matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvasfrom pandas.plotting import parallel_coordinatesclass ParallelCoordinatesWidget(QWidget):def __init__(self, parent=None):super(ParallelCoordinatesWidget, self).__init__(parent)self.figure, self.ax = plt.subplots()self.canvas = FigureCanvas(self.figure)layout = QVBoxLayout()layout.addWidget(self.canvas)self.setLayout(layout)self.draw_parallel_coordinates()def draw_parallel_coordinates(self):# 創建數據data = pd.DataFrame({'A': [1, 2, 3, 4],'B': [4, 3, 2, 1],'C': [2, 3, 4, 1],'D': [4, 1, 3, 2]})# 繪制平行坐標圖parallel_coordinates(data, 'A', ax=self.ax)# 更新畫布self.canvas.draw()app = QApplication(sys.argv)mainWindow = QMainWindow()mainWindow.setCentralWidget(ParallelCoordinatesWidget())mainWindow.show()sys.exit(app.exec_())

在這個示例中,我們定義了一個 ParallelCoordinatesWidget 類來展示平行坐標圖。使用 Pandas 和 Matplotlib 創建平行坐標圖,并將其嵌入到 PyQt5 應用程序中。

通過本系列教程,我們了解了如何使用PyQt5結合PyQtGraph和其他庫來創建一系列不同的圖表,從而使數據更加生動且易于理解。從基礎的圖表到復雜的GIS表示,PyQt5提供了廣泛的功能,以幫助開發者在Python中構建專業的數據可視化解決方案。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/208788.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208788.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208788.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鴻蒙原生應用開發——分布式數據對象

01、什么是分布式數據對象 在可信組網環境下&#xff0c;多個相互組網認證的設備將各自創建的對象加入同一個 sessionId&#xff0c;使得加入的多個數據對象之間可以同步數據&#xff0c;也就是說&#xff0c;當某一數據對象屬性發生變更時&#xff0c;其他數據對象會檢測到這…

讓聰明的車連接智慧的路,C-V2X開啟智慧出行生活

“聰明的車 智慧的路”形容的便是車路協同的智慧交通系統&#xff0c;從具備無鑰匙啟動&#xff0c;智能輔助駕駛和豐富娛樂影音功能的智能網聯汽車&#xff0c;到園區的無人快遞配送車&#xff0c;和開放的城市道路上自動駕駛的公交車、出租車&#xff0c;越來越多的車聯網應用…

thinkphp lists todo

來由&#xff1a; 數據庫的這個字段我想返回成&#xff1a; 新奇的寫法如下&#xff1a; 邏輯層的代碼&#xff1a; public function goodsDetail($goodId){$detail $this->good->where(id, $goodId)->hidden([type_params,user_id])->find();if (!$detail) {ret…

springboot(ssm出租車管理網站 出租車公司管理系統Java系統

springboot(ssm出租車管理網站 出租車公司管理系統Java系統 開發語言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服務器&#xff1a;tomcat 數據庫&#xff1a;mysql 5.7&#xff08;或8.0&#xff09;…

如何使用PostMan進行并發測試?

如何使用PostMan進行并發測試&#xff1f; &#x1f440;(Postman 的 runner 實際上是串行執行的&#xff0c;因此不能作為并發測試&#xff0c; 只是批量測試&#xff0c;本文如下稱為并發的是錯誤的) 文章目錄 如何使用PostMan進行并發測試&#xff1f;POST篇流程Pre-req 腳…

Conda常用命令總結

使用conda或anaconda的小伙伴們都知道&#xff0c;圖形界面時不靠譜的&#xff0c;而在命令行下&#xff0c;所有的操作就會穩定很多&#xff0c;且極少出現問題。因此&#xff0c;熟記conda的命令行就變得十分有用。但對于我這樣近50歲依舊奮斗在代碼第一線的大齡程序員而已&a…

攔截 open調用 (進程白名單,文件白名單)

攔截 open 文章目錄 攔截 open第一個需求文件結構進程白名單文件白名單 測試代碼第一個版本版本二代碼演示 增加一個日志記錄代碼解釋 gcc -shared -fPIC -o libintercept.so intercept.c -ldlLD_PRELOAD./libintercept.so ./processA在Linux中&#xff0c;我們可以使用LD_PREL…

ZooKeeper學習二

ZooKeeper的java客戶端 zk自帶zkclient及Apache開源的Curator Chubby是google的&#xff0c;完全實現paxos算法&#xff0c;不開源&#xff0c;ZooKeeper是chubby的開源實現&#xff0c;使用zab協議&#xff0c;paxos算法的變種。 ZooKeeper常用命令&#xff1a; Is get set …

MySQL:1118 - Row size too large(行大小不能超過 65535 問題)

文章目錄 問題原因問題復現環境 & 版本復現過程 解決方案調整列大小調整列類型 個人簡介 問題 當我們創建表或新增字段時&#xff0c;我們可能遇到下面這個問題&#xff1a; 1118 - Row size too large. The maximum row size for the used table type, not counting BLO…

12.Mysql 多表數據橫向合并和縱向合并

Mysql 函數參考和擴展&#xff1a;Mysql 常用函數和基礎查詢、 Mysql 官網 Mysql 語法執行順序如下&#xff0c;一定要清楚&#xff01;&#xff01;&#xff01;運算符相關&#xff0c;可前往 Mysql 基礎語法和執行順序擴展。 (8) select (9) distinct (11)<columns_name…

【力扣熱題100】287. 尋找重復數(弗洛伊德的烏龜和兔子方法)

【力扣熱題100】287. 尋找重復數 寫在最前面理解解決 "尋找重復數" 問題的算法問題描述弗洛伊德的烏龜和兔子方法為什么這個方法有效&#xff1f; 代碼復雜度 總結回顧 寫在最前面 刷一道力扣熱題100吧 難度中等 https://leetcode.cn/problems/find-the-duplicate-…

HTML 常用表單元素使用以及注解

一、表單的用途 HTML 表單用于收集用戶的輸入信息。 HTML 表單表示文檔中的一個區域&#xff0c;此區域包含交互控件&#xff0c;將用戶收集到的信息發送到 Web 服務器。 一個表單有三個基本組成部分&#xff1a; 表單標簽&#xff1a;這包含了處理表單數據所用的URL以及數據…

vue使用$router.push()或者$router.go(),重新返回上一頁不走生命周期

是因為在App.vue中&#xff0c;vue路由&#xff08;router-view&#xff09;組件使用路由緩存組件(keep-alive)包裹著&#xff0c;導致不重新走生命周期&#xff0c;這樣可以提高運行效率&#xff0c;但有時候&#xff0c;我們需要重新加載生命周期刷新數據。 解決方案&#x…

Java Web應用小案例 - 實現用戶登錄功能

文章目錄 一、使用純JSP方式實現用戶登錄功能&#xff08;一&#xff09;項目概述&#xff08;二&#xff09;實現步驟1、創建Web項目2、創建登錄頁面 二、使用JSPServlet方式實現用戶登錄功能三、使用JSPServletDB方式實現用戶登錄功能 一、使用純JSP方式實現用戶登錄功能 &a…

ubuntu22.04安裝 nvidia-cudnn

nvidia-cudnn 是 NVIDIA CUDA 深度神經網絡庫&#xff08;CUDA Deep Neural Network library&#xff09;的縮寫。這是一個由 NVIDIA 提供的庫&#xff0c;用于加速深度學習應用程序。它包含了針對深度神經網絡中常用操作&#xff08;如卷積、池化、歸一化、激活層等&#xff0…

【工具】機器之間傳輸文件的常用方式

0、背景 QA的工作工程中,在不同服務器或者本地機器與服務器之間進行文件或目錄的上傳或者下載是非常普遍的場景,為此本文將常用的好用的工具一并做個總結,大家有其他的利器也歡迎評論區留言。 1、 scp命令 這是平常使用最多的命令,可以在相互連通的服務之間拷貝文件。命…

【Linux】如何清空某個文件的內容

cat /dev/null > file1 清空某個文件的內容使用cat /dev/null > file1&#xff0c;它將 /dev/null 的內容&#xff08;空內容&#xff09;重定向到 file1。 如下所示&#xff0c;file1文件里的內容被清空。 錯誤寫法 錯誤寫法是&#xff1a;cat file1 > /dev/null&…

linuxc語udp發送程序

以下是一個基于UDP通信的C程序&#xff0c;用于發送含有指定格式的數據包。該程序把數據分成若干個包&#xff0c;每個包包含4字節數據包頭數據長度數據內容&#xff0c;每個包最大8192字節。 #include <stdio.h> #include <stdlib.h> #include <string.h> …

華為OD機試真題-小明找位置-2023年OD統一考試(C卷)

題目描述&#xff1a; 小朋友出操&#xff0c;按學號從小到大排成一列&#xff1b;小明來遲了&#xff0c;請你給小明出個主意&#xff0c;讓他盡快找到他應該排的位置。 算法復雜度要求不高于nLog(n)&#xff1b;學號為整數類型&#xff0c;隊列規模<10000&#xff1b; 輸…

持續集成交付CICD:CentOS 7 安裝 Nexus 3.63

目錄 一、實驗 1.CentOS 7 安裝Nexus3.63 二、問題 1.安裝Nexus報錯 2.Nexus啟動停止相關命令 一、實驗 1.CentOS 7 安裝Nexus3.63 &#xff08;1&#xff09;當前操作系統版本&JDK版本 cat /etc/redhat-releasejava -version&#xff08;2&#xff09;下載Nexus新…