Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die Zeichenmethode mithilfe der Zeichenbibliothek in Python

Einführung in die Zeichenmethode mithilfe der Zeichenbibliothek in Python

Y2J
Y2JOriginal
2017-05-12 10:49:429499Durchsuche

matplotlib ist die bekannteste Zeichnungsbibliothek von Python. In diesem Artikel erfahren Sie, wie Sie mit matplotlib+numpy eine Vielzahl von Zeichnungen zeichnen können, darunter gefüllte Diagramme, Streudiagramme und Balkendiagramme , Freunde in Not können sich an sie wenden.

Vorwort

matplotlib ist die bekannteste Zeichenbibliothek in Python. Sie bietet eine Reihe von Befehlen ähnlich der MatlabAPI, ideal für interaktives Mapping. In diesem Artikel werden mehrere in Matplot unterstützte und häufig in der Analyse verwendete Diagramme in Form von Beispielen analysiert. Dazu gehören gefüllte Diagramme, Streudiagramme, Balkendiagramme, Konturdiagramme und 3D-Diagramme. Werfen wir einen Blick auf die detaillierte Einführung:

1. Fülldiagramm >

Referenzcode


from matplotlib.pyplot import *
x=linspace(-3,3,100)
y1=np.sin(x)
y2=np.cos(x)
fill_between(x,y1,y2,where=(y1>=y2),color='red',alpha=0.25)
fill_between(x,y1,y2,where=(y<>y2),color=&#39;green&#39;,alpha=0.25)
plot(x,y1)
plot(x,y2)
show()
Kurzanalyse

Hier kommt hauptsächlich die

Funktionfill_between zum Einsatz. Diese Funktion ist leicht zu verstehen. Sie besteht darin, das x-Achsen-Array und die beiden zu füllenden y-Achsen-Arrays zu übergeben und dann den Füllbereich zu übergeben Füllbereich; schließlich können Sie Füllfarbe, Transparenz und andere geänderte Parameter hinzufügen. Natürlich hat die Funktion auch erweiterte Verwendungsmöglichkeiten. Weitere Informationen finden Sie in der Verwendung von fill_between oder in der Hilfedokumentation. where=

Renderingfill_between

2. Streudiagramme

Referenzcode


Kurze Analyse

from matplotlib.pyplot import *
n = 1024
X = np.random.normal(0,1,n)
Y = np.random.normal(0,1,n)
T = np.arctan2(Y,X)
scatter(X,Y, s=75, c=T, alpha=.5)
xlim(-1.5,1.5)
ylim(-1.5,1.5)
show()

Zuerst stellen wir Numpys vor Offensichtlich ist dies eine Funktion, die eine Normalverteilung erzeugt. Diese Funktion akzeptiert drei Parameter, die den Mittelwert, die Standardabweichung und die Länge des generierten Arrays darstellen. Sehr leicht zu merken.

Dann gibt es die Funktion

. Diese Funktion akzeptiert zwei Parameter, die das y-Array bzw. das x-Array darstellen, und gibt dann den entsprechenden normal-Wert zurück, und das Ergebnis wird im Bogenmaß angegeben.

Als nächstes wird die arctan2-Methode zum Zeichnen eines Streudiagramms verwendet. Zuerst werden natürlich die x- und y-Arrays übergeben, und dann stellt der s-Parameter die Skalierung dar, also die Größe der Streuung Punkte; der c-Parameter stellt die Farbe dar, ich werde ihn übergeben. Es wird ein nach Winkel unterteiltes Array übergeben, das der Farbe jedes Punktes entspricht (obwohl ich nicht weiß, wie es entspricht, aber es scheint so zu sein eine relative Konvertierung basierend auf anderen Elementen im Array ist hier nicht wichtig, es ist sowieso dasselbe. Weisen Sie einfach der Farbe den gleichen Wert zu. Der letzte ist der Parameter arctan(y/x), der die Transparenz des Punktes darstellt.

Informationen zur erweiterten Verwendung der scatter-Funktion finden Sie in der offiziellen Dokument-Scatter-Funktion oder im Hilfedokument. alpha

Stellen Sie abschließend nur noch den Koordinatenbereich ein.

scatter

Rendering

3. Balkendiagramme

Referenzcode


Kurzanalyse

from matplotlib.pyplot import *
n = 12
X = np.arange(n)
Y1 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)
Y2 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)
bar(X, +Y1, facecolor=&#39;#9999ff&#39;, edgecolor=&#39;white&#39;)
bar(X, -Y2, facecolor=&#39;#ff9999&#39;, edgecolor=&#39;white&#39;)
for x,y in zip(X,Y1):
 text(x+0.4, y+0.05, &#39;%.2f&#39; % y, ha=&#39;center&#39;, va= &#39;bottom&#39;)
for x,y in zip(X,Y2):
 text(x+0.4, -y-0.05, &#39;%.2f&#39; % y, ha=&#39;center&#39;, va= &#39;top&#39;)
xlim(-.5,n)
xticks([])
ylim(-1.25,+1.25)
yticks([])
show()

Hinweis: Sie müssen das Pylab importieren Paket manuell erstellen, andernfalls wird die Leiste nicht gefunden. . . Verwenden Sie zunächst die

-Funktion von Numpy, um ein Array von [0,1,2,…,n] zu generieren. (Sie können auch Linspace verwenden)

Zweitens verwenden Sie die

-Funktion von Numpy, um ein gleichmäßig verteiltes Array zu generieren, indem Sie drei Parameter übergeben, die die untere Grenze, die obere Grenze bzw. die Array-Länge darstellen. Und verwenden Sie dieses Array, um die Daten zu generieren, die angezeigt werden müssen. arange

Dann kommt die Verwendung der Balkenfunktion. Die grundlegende Verwendung ähnelt der vorherigen Darstellung und Streuung, wobei die horizontalen und vertikalen Koordinaten sowie einige dekorative Parameter übergeben werden.

uniformDann müssen wir die

-Schleife

verwenden, um Zahlen für das Histogramm anzuzeigen: Verwenden Sie die

-Funktion von Python, um X und Y1 paarweise zu koppeln und eine Schleife zu durchlaufen, um den jeweiligen Wert zu erhalten Datenposition und verwenden Sie dann die Funktion for, um an dieser Position eine -Zeichenfolge anzuzeigen (achten Sie auf die detaillierte Anpassung der Position). text übergibt die horizontalen und vertikalen Koordinaten, die anzuzeigende Zeichenfolge, der Parameter zip gibt die horizontale Ausrichtung an und der Parameter va gibt die vertikale Ausrichtung an. textPassen Sie abschließend den Koordinatenbereich an und heben Sie die Skalierung der horizontalen und vertikalen Koordinaten auf, damit es schön bleibt. haInformationen zur spezifischen Verwendung der Funktion

finden Sie in der Verwendung der Leistenfunktion oder im Hilfedokument.

Renderingbar

4. Konturdiagramme

Referenzcode


from matplotlib.pyplot import *
def f(x,y):
 return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)
n = 256
x = np.linspace(-3,3,n)
y = np.linspace(-3,3,n)
X,Y = np.meshgrid(x,y)
contourf(X, Y, f(X,Y), 8, alpha=.75, cmap=cm.hot)
C = contour(X, Y, f(X,Y), 8, colors=&#39;black&#39;, linewidth=.5)
clabel(C, inline=1, fontsize=10)
show()

简要分析

首先要明确等高线图是一个三维立体图,所以我们要建立一个二元函数f,值由两个参数控制,(注意,这两个参数都应该是矩阵)。

然后我们需要用numpy的meshgrid函数生成一个三维网格,即,x轴由第一个参数指定,y轴由第二个参数指定。并返回两个增维后的矩阵,今后就用这两个矩阵来生成图像。

接着就用到coutourf函数了,所谓contourf,大概就是contour fill的意思吧,只填充,不描边;这个函数主要是接受三个参数,分别是之前生成的x、y矩阵和函数值;接着是一个整数,大概就是表示等高线的密度了,有默认值;然后就是透明度和配色问题了,cmap的配色方案这里不多研究。

随后就是contour函数了,很明显,这个函数是用来描线的。用法可以类似的推出来,不解释了,需要注意的是他返回一个对象,这个对象一般要保留下来个供后续的加工细化。

最后就是用clabel函数来在等高线图上表示高度了,传入之前的那个contour对象;然后是inline属性,这个表示是否清除数字下面的那条线,为了美观当然是清除了,而且默认的也是1;再就是指定线的宽度了,不解释,。

效果图

五、点阵图

参考代码


from matplotlib.pyplot import *
def f(x,y):
 return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)
n = 10
x = np.linspace(-3,3,3.5*n)
y = np.linspace(-3,3,3.0*n)
X,Y = np.meshgrid(x,y)
Z = f(X,Y)
imshow(Z,interpolation=&#39;nearest&#39;, cmap=&#39;bone&#39;, origin=&#39;lower&#39;)
colorbar(shrink=.92)
show()

简要分析

这段代码的目的就是将一个矩阵直接转换为一张像照片一样的图,完整的进行显示。

前面的代码就是生成一个矩阵Z,不作解释。

接着用到了imshow函数,传人Z就可以显示出一个二维的图像了,图像的颜色是根据元素的值进行的自适应调整,后面接了一些修饰性的参数,比如配色方案(cmap),零点位置(origin)。

最后用colorbar显示一个色条,可以不传参数,这里传进去shrink参数用来调节他的长度。

效果图

六、3D图

参考代码


import numpy as np
from pylab import *
from mpl_toolkits.mplot3d import Axes3D
fig = figure()
ax = Axes3D(fig)
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.hot)
ax.contourf(X, Y, Z, zdir=&#39;z&#39;, offset=-2, cmap=plt.cm.hot)
ax.set_zlim(-2,2)
show()

简要分析

有点麻烦,需要用到的时候再说吧,不过原理也很简单,跟等高线图类似,先画图再描线,最后设置高度,都是一回事。

效果图

总结

【相关推荐】

1. Python免费视频教程

2. Python基础入门教程

3. Python在数据科学中的应用

Das obige ist der detaillierte Inhalt vonEinführung in die Zeichenmethode mithilfe der Zeichenbibliothek in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn