Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die Python-Plotbibliothek Matplotlib, Tutorial_python

Einführung in die Python-Plotbibliothek Matplotlib, Tutorial_python

不言
不言Original
2018-04-19 10:42:312319Durchsuche

Matplotlib ist eine 2D-Zeichenbibliothek in Python-Sprache. Sie unterstützt verschiedene Plattformen und ist leistungsstark genug, um problemlos verschiedene professionelle Bilder zu zeichnen. Dieser Artikel ist ein Einführungs-Tutorial zur Python-Zeichenbibliothek Matplotlib. Interessierte Freunde sollten es gemeinsam lernen

Laufumgebung

Weil das so ist ein Python-Sprachsoftwarepaket, daher müssen Sie zunächst die Python-Sprachumgebung auf Ihrem Computer installieren. Bitte recherchieren Sie diesbezüglich im Internet, wie Sie es erhalten können.

Informationen zur Installation von Matplotlib finden Sie hier: Matplotlib-Installation.

Der Autor empfiehlt die Installation über pip. Die spezifische Methode lautet wie folgt:

sudo pip3 install matplotlib

Der Quellcode und die Testdaten in diesem Artikel finden Sie hier: matplotlib_tutorial

Die Codebeispiele in diesem Artikel verwenden eine andere Python-Bibliothek: NumPy. Es wird empfohlen, dass sich die Leser zunächst mit NumPy vertraut machen. Ich habe bereits ein grundlegendes Tutorial zu NumPy geschrieben, siehe hier: Python Machine Learning Library NumPy Tutorial.

Der Code dieses Artikels wurde in der folgenden Umgebung getestet:

  • Apple OS X 10.13

  • Python 3.6.3 matplotlib 2.1. 1

  • numpy 1.13.3

Einführung

Matplotlib anwendbar für verschiedene Umgebungen, einschließlich:

  • Python-Skript

  • IPython-Shell Jupyter-Notebook

  • Web Application Server

  • User Graphical Interface Toolkit

Mit Matplotlib können Sie ganz einfach verschiedene Arten von Bildern generieren, wie zum Beispiel: Histogramme, Spektren Grafiken, Balkendiagramme, Streudiagramme usw. Und es kann sehr einfach angepasst werden.

Codebeispiel für den Einstieg

Sehen wir uns das einfachste Codebeispiel an, um ein Gefühl dafür zu bekommen, wie Matplotlib aussieht:

# test.py
import matplotlib.pyplot as plt
import numpy as np
data = np.arange(100, 201)
plt.plot(data)
plt.show()

Die Hauptlogik dieses Codes besteht nur aus drei Zeilen, aber er zeichnet ein sehr intuitives lineares Diagramm, wie unten gezeigt:

Vergleichen Sie dieses Liniendiagramm. Lassen Sie uns die Logik der drei Codezeilen erklären:

  • Generieren Sie ein [100, 200] bis np.arange(100, 201) Ein Array von Ganzzahlen dazwischen sind seine Werte: [100, 101, 102, …, 200]

  • Plot it through matplotlib.pyplot. Offensichtlich entspricht der aufgetragene Wert der Ordinate (y-Achse) im Diagramm. Und matplotlib selbst legt die Abszisse (x-Achse) des Diagramms für uns fest: [0, 100], da wir genau 100 Werte

  • haben, um dieses Diagramm durch plt.show()

Dieser Code ist sehr einfach und läuft genauso. Wenn Sie bereits über die Ausführungsumgebung dieses Artikels verfügen, speichern Sie den obigen Code in einer Textdatei (oder beziehen Sie den Quellcode dieses Artikels über Github) und führen Sie dann den folgenden Befehl aus, um die obigen Grafiken auf Ihrem eigenen Computer anzuzeigen:

python3 test.py

Hinweis 1: In den folgenden Tutorials erklären wir Ihnen nach und nach, wie Sie jedes Detail im Bild anpassen können. Zum Beispiel: Achsen, Grafiken, Farbgebung, Linienstile usw.

Hinweis 2: Falls nicht erforderlich, wird im Screenshot unten der Rand außerhalb der Grafik entfernt, so dass nur der Hauptteil der Grafik übrig bleibt.

Zeichnen Sie mehrere Diagramme gleichzeitig

Manchmal möchten wir möglicherweise mehrere Diagramme gleichzeitig zeichnen, beispielsweise zum Vergleich zweier Datensätze. oder Verschiedene Arten der Anzeige eines Datensatzes usw.

Sie können mehrere Figuren mit den folgenden Methoden erstellen:

Mehrere Figuren

können einfach als eine verstanden werden

Es ist ein Grafikfenster. figureEs wird eine Standardeinstellung geben matplotlib.pyplot, und wir können über figure auch weitere erstellen. Wie im folgenden Code gezeigt: plt.figure()

# figure.py
import matplotlib.pyplot as plt
import numpy as np
data = np.arange(100, 201)
plt.plot(data)
data2 = np.arange(200, 301)
plt.figure()
plt.plot(data2)
plt.show()

Dieser Code zeichnet die Grafiken von zwei Fenstern, von denen jedes ein Liniendiagramm mit unterschiedlichen Intervallen ist, wie folgt Angezeigt:

Hinweis: Die beiden Fenster überlappen sich im Ausgangszustand vollständig.

Mehrere Nebenhandlungen

In manchen Fällen möchten wir mehrere Grafiken im selben Fenster anzeigen. An dieser Stelle können mehrere Unterhandlungen verwendet werden. Das Folgende ist ein Codebeispiel:

# subplot.py
import matplotlib.pyplot as plt
import numpy as np
data = np.arange(100, 201)
plt.subplot(2, 1, 1)
plt.plot(data)
data2 = np.arange(200, 301)
plt.subplot(2, 1, 2)
plt.plot(data2)
plt.show()

In diesem Code handelt es sich mit Ausnahme der Funktion

um bekannte Inhalte. subplotDie ersten beiden Parameter der Funktion geben die Anzahl der Unterplots an, das heißt: sie unterteilen den aktuellen Graphen in Form einer Matrix, und die beiden Ganzzahlen geben die Anzahl der Zeilen bzw. Spalten der Matrix an. Und der dritte Parameter bezieht sich auf den Index in der Matrix. subplot

Daher bezieht sich die folgende Codezeile auf: die erste Unterhandlung in einer 2-zeiligen, 1-spaltigen Unterhandlung.

plt.subplot(2, 1, 1)

下面这行代码指的是:2行1列subplot中的第2个subplot。


plt.subplot(2, 1, 2)


所以这段代码的结果是这个样子:

subplot函数的参数不仅仅支持上面这种形式,还可以将三个整数(10之内的)合并一个整数。例如:2, 1, 1可以写成2112, 1, 2可以写成212

因此,下面这段代码的结果是一样的:

import matplotlib.pyplot as plt
import numpy as np
data = np.arange(100, 201)
plt.subplot(211)
plt.plot(data)
data2 = np.arange(200, 301)
plt.subplot(212)
plt.plot(data2)
plt.show()

subplot函数的详细说明参见这里:matplotlib.pyplot.subplot

常用图形示例

Matplotlib可以生成非常多的图形式样,多到令人惊叹的地步。大家可以在这里:Matplotlib Gallery 感受一下。

本文作为第一次的入门教程,我们先来看看最常用的一些图形的绘制。

线性图

前面的例子中,线性图的横轴的点都是自动生成的,而我们很可能希望主动设置它。另外,线条我们可能也希望对其进行定制。看一下下面这个例子:

# plot.py
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [3, 6, 9], '-r')
plt.plot([1, 2, 3], [2, 4, 9], ':g')
plt.show()

这段代码可以让我们得到这样的图形:

这段代码说明如下:

plot函数的第一个数组是横轴的值,第二个数组是纵轴的值,所以它们一个是直线,一个是折线; 最后一个参数是由两个字符构成的,分别是线条的样式和颜色。前者是红色的直线,后者是绿色的点线。关于样式和颜色的说明请参见plot函数的API Doc:matplotlib.pyplot.plot

散点图

scatter函数用来绘制散点图。同样,这个函数也需要两组配对的数据指定x和y轴的坐标。下面是一段代码示例:

# scatter.py
import matplotlib.pyplot as plt
import numpy as np
N = 20
plt.scatter(np.random.rand(N) * 100,
   np.random.rand(N) * 100,
   c='r', s=100, alpha=0.5)
plt.scatter(np.random.rand(N) * 100,
   np.random.rand(N) * 100,
   c='g', s=200, alpha=0.5)
plt.scatter(np.random.rand(N) * 100,
   np.random.rand(N) * 100,
   c='b', s=300, alpha=0.5)
plt.show()

这段代码说明如下:

这幅图包含了三组数据,每组数据都包含了20个随机坐标的位置 参数c表示点的颜色,s是点的大小,alpha是透明度

这段代码绘制的图形如下所示:

scatter函数的详细说明参见这里:matplotlib.pyplot.scatter

饼状图

pie函数用来绘制饼状图。饼状图通常用来表达集合中各个部分的百分比。

# pie.py
import matplotlib.pyplot as plt
import numpy as np
labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
data = np.random.rand(7) * 100
plt.pie(data, labels=labels, autopct='%1.1f%%')
plt.axis('equal')
plt.legend()
plt.show()

这段代码说明如下:

data是一组包含7个数据的随机数值 图中的标签通过labels来指定 autopct指定了数值的精度格式 plt.axis('equal')设置了坐标轴大小一致 plt.legend()指明要绘制图例(见下图的右上角)

这段代码输出的图形如下所示:

pie函数的详细说明参见这里:matplotlib.pyplot.pie

条形图

bar函数用来绘制条形图。条形图常常用来描述一组数据的对比情况,例如:一周七天,每天的城市车流量。

下面是一个代码示例:

# bar.py
import matplotlib.pyplot as plt
import numpy as np
N = 7
x = np.arange(N)
data = np.random.randint(low=0, high=100, size=N)
colors = np.random.rand(N * 3).reshape(N, -1)
labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
plt.title("Weekday Data")
plt.bar(x, data, alpha=0.8, color=colors, tick_label=labels)
plt.show()

这段代码说明如下:

这幅图展示了一组包含7个随机数值的结果,每个数值是[0, 100]的随机数 它们的颜色也是通过随机数生成的。np.random.rand(N * 3).reshape(N, -1)表示先生成21(N x 3)个随机数,然后将它们组装成7行,那么每行就是三个数,这对应了颜色的三个组成部分。如果不理解这行代码,请先学习一下Python 机器学习库 NumPy 教程 title指定了图形的标题,labels指定了标签,alpha是透明度

这段代码输出的图形如下所示:

bar函数的详细说明参见这里:matplotlib.pyplot.bar

直方图

hist函数用来绘制直方图。直方图看起来是条形图有些类似。但它们的含义是不一样的,直方图描述了数据中某个范围内数据出现的频度。这么说有些抽象,我们通过一个代码示例来描述就好理解了:

# hist.py
import matplotlib.pyplot as plt
import numpy as np
data = [np.random.randint(0, n, n) for n in [3000, 4000, 5000]]
labels = ['3K', '4K', '5K']
bins = [0, 100, 500, 1000, 2000, 3000, 4000, 5000]
plt.hist(data, bins=bins, label=labels)
plt.legend()
plt.show()

上面这段代码中,[np.random.randint(0, n, n) for n in [3000, 4000, 5000]]生成了包含了三个数组的数组,这其中:

第一个数组包含了3000个随机数,这些随机数的范围是 [0, 3000) 第二个数组包含了4000个随机数,这些随机数的范围是 [0, 4000) 第三个数组包含了5000个随机数,这些随机数的范围是 [0, 5000)

bins数组用来指定我们显示的直方图的边界,即:[0, 100) 会有一个数据点,[100, 500)会有一个数据点,以此类推。所以最终结果一共会显示7个数据点。同样的,我们指定了标签和图例。

这段代码的输出如下图所示:

在这幅图中,我们看到,三组数据在3000以下都有数据,并且频度是差不多的。但蓝色条只有3000以下的数据,橙色条只有4000以下的数据。这与我们的随机数组数据刚好吻合。

hist函数的详细说明参见这里:matplotlib.pyplot.hist

结束语

通过本文,我们已经知道了Matplotlib的大致使用方法和几种最基本的图形的绘制方式。

需要说明的是,由于是入门教程,因此本文中我们只给出了这些函数和图形最基本的使用方法。但实际上,它们的功能远不止这么简单。因此本文中我们贴出了这些函数的API地址以便读者进一步的研究。

相关推荐:

python绘图库的基本操作方法介绍

python绘图方法实例入门

Das obige ist der detaillierte Inhalt vonEinführung in die Python-Plotbibliothek Matplotlib, Tutorial_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