Im heutigen Zeitalter der künstlichen Intelligenz und Big Data ist die Datenvisualisierung zu einem sehr wichtigen Bindeglied in Datenanalyseanwendungen geworden. Die Datenvisualisierung kann uns helfen, die Daten intuitiver zu verstehen, Muster und Anomalien in den Daten zu entdecken und unsere Datenanalyse auch anderen klarer zu vermitteln.
Python ist eine der am weitesten verbreiteten Programmiersprachen und schneidet im Bereich Datenanalyse und Data Mining sehr gut ab. Python bietet eine Fülle von Datenvisualisierungsbibliotheken wie Matplotlib, Seaborn, Bokeh usw. Unter ihnen ist Matplotlib eine der bekanntesten Datenvisualisierungsfunktionen. Die offizielle Dokumentation ist jedoch nicht sehr detailliert auf die zugrunde liegende Datenvisualisierungstechnologie von Matplotlib die zugrunde liegende Technologie ist implementiert. Daher konzentriert sich dieser Artikel auf die Verwendung der zugrunde liegenden Technologie von Python zur Datenvisualisierung und stellt spezifische Codebeispiele bereit.
Matplotlib ist eine weit verbreitete Datenvisualisierungsbibliothek in Python, und die zugrunde liegende Technologie basiert auf Pyplot.
Normalerweise importieren wir zuerst die Visualisierungsbibliothek, erstellen dann eine Grafikinstanz über die Funktion plot() und erstellen und zeigen die Grafiken dann über eine Reihe von Funktionen an.
Das Folgende ist ein einfaches Beispiel, das zeigt, wie man die Matplotlib-Bibliothek in Python verwendet, um eine Koordinatenkurve mit der x-Achse als horizontaler Achse und der y-Achse als vertikaler Achse zu zeichnen.
import matplotlib.pyplot as plt import numpy as np # 生成X轴的范围是(-π,π)内的等差数列 x = np.linspace(-np.pi,np.pi,256,endpoint=True) # 计算cos(x)和sin(x)的值 C,S = np.cos(x), np.sin(x) #创建画布和子图 fig,ax = plt.subplots() # 画出cos(x)和sin(x)的曲线图 ax.plot(x,C,label='cos(x)') ax.plot(x,S,label='sin(x)') # 设置标题,x轴,y轴的名称 ax.set_title('Cos and Sin Function') ax.set_xlabel('X Axis') ax.set_ylabel('Y Axis') # 设置图例 ax.legend() # 显示图形 plt.show()
Mit dem obigen Code können Sie ganz einfach eine Koordinatenkurve zeichnen, wobei die x-Achse die horizontale Achse und die y-Achse die vertikale Achse ist.
Im obigen Code haben wir zunächst den Wertebereich der x-Achse generiert und dann die Werte von cos(x) und sin(x) berechnet. Als nächstes erstellen wir eine Leinwand und einen Unterplot und verwenden dann die Funktion plot(), um Zeichenvorgänge auszuführen. Schließlich legen wir über einige Funktionen den Titel, den Namen der X/Y-Achse und die Legende des Diagramms fest und rufen dann die Funktion show() auf, um die Canvas-Instanz anzuzeigen.
Unter diesen ist die Unterbibliothek matplotlib.pyplot das Zeichenmodul unter der Matplotlib-Bibliothek. Sie bietet verschiedene Funktionen zum Zeichnen auf NumPy-Arrays. Die Implementierung der zugrunde liegenden Technologie von Matplotlib kann unter zwei Aspekten verstanden werden, nämlich FigureCanvas und Renderer, bei denen es sich um die Canvas- bzw. Renderer-Objekte in Matplotlib handelt.
FigureCanvas ist eine objektorientierte Grafikanzeigeklasse in Matplotlib. Sie ist für die Interaktion mit dem Zeichengerät und die Ausgabe der Zeichenergebnisse auf dem Display verantwortlich. Im obigen Beispiel haben wir über plt.subplots() eine Figur, ein Canvas-Objekt, erstellt. Alle nachfolgenden Zeichenvorgänge werden auf dieser Leinwand ausgeführt.
Renderer ist ein Renderer-Objekt in Matplotlib. Es ist für das Zeichnen der Linien, Punkte, Texte usw. der Zeichnung in Bilder verantwortlich, dh für das Rendern auf der Leinwand. Im obigen Beispiel haben wir die Funktion ax.plot() verwendet, um die Kurven von cos(x) und sin(x) zu zeichnen, und diese Funktion verwendet tatsächlich ein Renderer-Objekt zum Zeichnen von Grafiken. In diesem Prozess wird zuerst der Axis X/Y Limiter aufgerufen, um den Datenbereich auf jeder Koordinatenachse zu bestimmen, dann wird der Scaler verwendet, um die Originaldaten in Koordinaten auf der Leinwand umzuwandeln, und schließlich wird der Renderer verwendet, um die reale Zeichnung zu implementieren Betrieb.
Seaborn ist eine übergeordnete Zeichenbibliothek, die auf Matplotlib basiert. Sie bietet eine einfachere und benutzerfreundlichere API und behält gleichzeitig die zugrunde liegende Zeichentechnologie in Matplotlib bei Ergänzung zu Matplotlib und Erweiterung.
Wir nehmen das Zeichnen eines univariaten Histogramms als Beispiel, um spezifische Codebeispiele mithilfe der Seaborn-Bibliothek zu zeigen. In diesem Beispiel wird der in die Seaborn-Bibliothek integrierte Datensatz „mpg“ verwendet.
import seaborn as sns # 设置Seaborn图库的风格和背景颜色 sns.set(style='whitegrid', palette='pastel') # 读取数据 mpg = sns.load_dataset("mpg") # 绘制直方图,并设置额外参数 sns.distplot(mpg['mpg'], bins=20, kde=True, rug=True) # 设置图形标题以及X轴,Y轴的标签 plt.title('Histogram of mpg ($mu=23.45, ; sigma=7.81$)') plt.xlabel('MPG') plt.ylabel('Frequency') # 显示图形 plt.show()
Mit dem obigen Code können Sie ein Histogramm zeichnen, das die Verteilung der mpg-Daten zeigt.
Im obigen Code legen wir zunächst den Stil und die Hintergrundfarbe der Seaborn-Bibliothek fest und lesen dann den mit Seaborn gelieferten MPG-Datensatz. Anschließend haben wir mit der Funktion sns.distplot() ein Histogramm gezeichnet und einige zusätzliche Parameter festgelegt, um den Grafikeffekt anzupassen. Schließlich verwenden wir die Funktionen plt.title(), plt.xlabel() und plt.ylabel(), um den Titel des Diagramms, den Namen der X/Y-Achse und andere Informationen festzulegen, und rufen dann die Funktion plt.show() auf um die Grafik anzuzeigen.
Der Implementierungsprozess der zugrunde liegenden Technologie von Seaborn ähnelt Matplotlib, und das Zeichnen wird auch über FigureCanvas und Renderer implementiert. In der zugrunde liegenden Technologie von Seaborn wird das FigureCanvas-Objekt über FacetGrid erstellt, und das Zeichnen basiert auf diesem Canvas-Objekt. Gleichzeitig wird das Zeichnen in der Seaborn-Bibliothek hauptsächlich über die AxesSubplot-Klasse implementiert. Diese Klasse ist eine Unterklasse der Axes-Klasse in Matplotlib, ist jedoch effizienter und benutzerfreundlicher gestaltet und wird daher von Seaborn als Hauptimplementierung der zugrunde liegenden Zeichentechnologie verwendet.
Bokeh ist eine Python-Bibliothek zur Datenvisualisierung und explorativen Analyse, die interaktiv, reaktionsschnell und effizient für die Erstellung dynamischer Datenvisualisierungen ist. Die Zeichentechnologie in der zugrunde liegenden Technologie von Bokeh wird hauptsächlich auf Basis von JavaScript implementiert, sodass interaktivere und dynamischere Visualisierungseffekte erzielt werden können.
下面展示一个简单的 Bokeh 代码示例,说明如何在 Python 中使用 Bokeh 库绘制一个5条折线图,其中使用 Bokeh 提供的工具箱来进行交互式操作。
from bokeh.plotting import figure, show from bokeh.io import output_notebook # 启用Jupyter Notebook绘图 output_notebook() # 创建一个 Bokeh 图形对象 p = figure(title="Simple Line Graph") # 创建折线图 x = [1, 2, 3, 4, 5] y = [6, 7, 2, 4, 5] p.line(x, y, legend="Line A", line_width=2) y2 = [2, 3, 4, 5, 6] p.line(x, y2, legend="Line B", line_width=2) y3 = [4, 5, 1, 7, 8] p.line(x, y3, legend="Line C", line_width=2) y4 = [6, 2, 4, 8, 1] p.line(x, y4, legend="Line D", line_width=2) y5 = [5, 8, 6, 2, 4] p.line(x, y5, legend="Line E", line_width=2) # 添加工具箱 p.toolbar_location = "above" p.toolbar.logo = "grey" # 设置图形的X轴,Y轴以及图例 p.xaxis.axis_label = "X" p.yaxis.axis_label = "Y" p.legend.location = "bottom_right" # 显示图形 show(p)
通过上述代码,可以绘制出一个包含5条折线的折线图,并且提供了一些 Bokeh 工具箱来提供交互式操作。
Bokeh 底层技术的实现过程中,最核心的部分就是基于 JavaScript 来实现绘图。在上述代码中,我们主要使用了 Bokeh 的 figure()函数来创建一个 Bokeh 图形对象。同时,我们也使用了 Bokeh 提供的 line()函数来创建折线图,并且添加了一些工具箱和额外的功能,如工具箱的位置、X轴/Y轴的名称和图例的位置等等。
在Bokeh 底层技术的实现过程中,将Python代码转换为JavaScript代码非常重要。Bokeh 将Python代码转换为 JavaScript 代码,然后使用 Web 技术在前端绘图。Bokeh 库中的 BokehJS 是使用 TypeScript 编写的 JavaScript 库,它实现了所有 Bokeh 的绘图功能。因此,在使用Bokeh库绘制数据可视化时,我们也需要对比对JavaScript进行一些调试和定制。
数据可视化是一个重要的环节,而Python通过各种底层技术提供了多种数据可视化库,其中最为流行的有Matplotlib、Seaborn和Bokeh等。这些库都支持Python本身的各种数据类型,并且能够提供非常高效,简洁和灵活的绘制方法。
本文主要介绍了使用Python底层技术实现数据可视化的方法,并提供了各库中的具体代码示例。通过学习这些底层技术,可以更加深入地了解Python数据可视化库背后的原理和细节。
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Datenvisualisierung der zugrunde liegenden Technologie von Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!