[Turn] Python - Matplotlib Zeichnungsvisualisierung Wissenspunkte beenden

Referenz

1 
2 
3 
4 
5 
6 
7 
8
importiere matplotlib.pyplot als plt 
label = 'Frösche', 'Schweine', 'Hunde', 'Baumstämme' 
Größen = 15,20,45,10 
Farben = 'Gelbgrün', 'Gold', 'Lichtblau', 'Lichtkoral' 
explodieren = 0,0.1,0,0 
plt.pie (Größen, explodieren = explodieren, Beschriftungen = Beschriftungen, Farben = Farben, Autopct = '% 1.1f %%', Schatten = Wahr, Startwinkel = 50) 
plt.axis ('gleich ') 
plt.show ()

Das matplotlib-Symbol zeigt normalerweise Chinesisch an

Um chinesische und negative Vorzeichen in der Tabelle anzeigen zu können, sind folgende Einstellungen erforderlich:

1 
2 
3
Import matplotlib.pyplot als plt 
plt.rcParams [ 'font.sas-serig'] = [ 'SimHei'] #Used chinesische Etikett angezeigt werden 
normalerweise plt.rcParams [ 'axes.unicode_minus'] = False #Used normalerweise negative Vorzeichen angezeigt werden

 

matplotlib inline 和 pylab inline

Sie können ipython --pylabdas ipython-Namensfenster öffnen.

1 
2
% matplotlib inline # notebook mode 
% pylab inline #ipython mode

Beide Befehle können das Bild beim Zeichnen in das interaktive Fenster einbetten, anstatt ein Bildfenster aufzurufen. Es gibt jedoch einen Fehler: Wenn der Code nicht einmal ausgeführt wird, kann die Zeichnung nicht überlagert werden, da in diesen beiden Modi Is pltUm zu erscheinen, erscheint das Bild sofort show, daher:

Es wird empfohlen, es in ipython notebook zu verwenden, damit Sie den Code problemlos bearbeiten und gleichzeitig zeichnen können.

Legen Sie die matplotlib-Parameter für das Projekt fest

Während der Codeausführung gibt es zwei Möglichkeiten, Parameter zu ändern:

  • Verwenden Sie das Parameterwörterbuch (rcParams).
  • Rufen Sie den Befehl matplotlib.rc () auf, um die Parameter durch Übergabe der Schlüsselwortprimitive zu ändern

Wenn Sie nicht jedes Mal, wenn Sie matplotlib verwenden, im Codeabschnitt konfigurieren möchten, können Sie die Dateiparameter von matplotlib ändern. Sie können matplot.get_config()Befehle verwenden, um das Konfigurationsdateiverzeichnis des aktuellen Benutzers zu finden.

Die Konfigurationsdatei enthält die folgenden Konfigurationselemente:

axex: Legen Sie die Farbe der Koordinatenachse Grenze und Fläche, die Größe der Skalen Koordinate und die Anzeige des Rasters
Backend: das Ziel gesetzt TkAgg und GTKAgg
Figur: Steuerung der dpi, Grenzfarbe, Grafik - Größe und subplot Einstellungen
Schriftart: Schriftartensatz (Schriftfamilie), Schriftgröße und Stileinstellungen
Raster: Festlegen der Rasterfarbe und der linearen
Legende: Festlegen der Anzeige der Legende und des Textes in der
Zeile: Festlegen der Zeile (Farbe, Linientyp, Breite usw.) und Markierungsfeld
: Füllen Sie den 2D-Raum aus. Grafikobjekte wie Polygone und Kreise. Kontrollieren Sie die Einstellungen für Linienbreite, Farbe und Anti-Aliasing usw.
savefig: Die gespeicherte Zahl kann individuell eingestellt werden. Stellen Sie beispielsweise den Hintergrund der gerenderten Datei auf Weiß ein.
Ausführlich: Stellen Sie matplotlib so ein, dass während der Ausführung Informationen ausgegeben werden, z. B. "stumm", "hilfreich", "debuggen" und "debuggen".
xticks und yticks: Legen Sie Farbe, Größe, Richtung und Beschriftungsgröße für die Haupt- und Neben-Ticks der x- und y-Achse fest.

Einstellungen für zeilenbezogene Attributmarkierungen

Die Attribute, die für die Zeile der Tabelle verwendet werden

Linienstil Linienstil oder ls Beschreibung Linienstil Linienstil oder ls Beschreibung
'-' durchgezogene Linie ':' gepunktete Linie  
'-' Gestrichelte Linie 'Keiner',' ','' Zeichne nichts  
'-.' Gepunktete Linie  

Linienmarkierung

Mark Maker Beschreibung Kennzeichen Beschreibung
'Ö' Kreis '.' Punkt
'D' Diamant 's' Quadrat
'h' Sechseck 1 '*' Sternchen
'H' Sechseck 2 'd' Kleiner Diamant
'_' Horizontale Linie 'v' Dreieck mit einer Ecke nach unten
'8' Achteck '<' Ein Eckmorgen verließ das Dreieck
'p' Pentagon '>' Dreieck mit einer Ecke nach rechts
',' Pixel '^' Dreieck mit einer Ecke nach oben
'+' Plus '\ ' Vertikale Linie
'Keiner','',' ' Nein 'x' X.

Farbe

Sie können matplotlib.pyplot.colors()alle von matplotlib unterstützten Farben durch Aufrufen erhalten .

Alias Farbe Alias Farbe
b Blau G Grün
r rot und Gelb
c Blau k schwarz  
m Magenta w Weiß

Wenn diese beiden Farben nicht ausreichen, gibt es zwei weitere Möglichkeiten, den Farbwert zu definieren:

  • Verwenden Sie hexadezimale HTML-Zeichenfolgen,  color='eeefff' um gültige HTML-Farbnamen ('rot', 'chartreuse' usw.) zu verwenden.
  • Sie können auch einen auf [0,1] normalisierten RGB-Vorfahren übergeben. color=(0.3,0.3,0.4)

Viele Methoden können Farbparameter einführen, z. B. title ().
plt.tilte('Title in a custom color',color='#123456')

Hintergrundfarbe

Durch Bereitstellen eines Parameters für Methoden wie matplotlib.pyplot.axes()oder können Sie die Hintergrundfarbe der Koordinaten angeben.matplotlib.pyplot.subplot()axisbg

subplot(111,axisbg=(0.1843,0.3098,0.3098)

Basis

Wenn Sie dem Befehl plot () ein eindimensionales Array oder eine eindimensionale Liste bereitstellen, verwendet matplotlib standardmäßig eine Reihe von y-Werten und generiert automatisch x-Werte für Sie. Der Standard-x-Vektor beginnt bei 0 und hat die gleiche Länge wie y, sodass die Daten von x [0,1,2,3] sind.

Bestimmen Sie den Koordinatenbereich

  • plt.axis ([xmin, xmax, ymin, ymax])
    Der Befehl axis () im obigen Beispiel gibt den Koordinatenbereich an.
  • xlim (xmin, xmax) und ylim (ymin, ymax) zum Anpassen des x, y-Koordinatenbereichs
    1 
    2 
    3 
    4 
    5 
    6 
    7 
    8 
    9 
    10 
    11 
    12 
    13 
    14 
    15 
    16 
    17 
    18
    
    % matplotlib inline 
    import numpy als np 
    import matplotlib.pyplot als plt 
    aus pylab import * 
    
    x = np.arange (-5.0, 5.0, 0.02) 
    y1 = np.sin (x) 
    
    plt.figure (1) 
    plt.subplot (211) 
    plt.plot (x, y1) 
    
    plt.subplot (212 ) #Stellen Sie den 
    x-Achsenbereich 
    xlim (-2,5, 2,5) 
    #Setzen Sie den 
    y-Achsenbereich ylim (-1, 1) 
    plt.plot (x, y1)
    

Überlagerung

Verwenden Sie einen Befehl, um mehrere Linien in verschiedenen Formaten zu zeichnen.

1 
2 
3 
4 
5 
6 
7 
8 
9
import numpy as np
import matplotlib.pyplot as plt

# evenly sampled time at 200ms intervals
t = np.arange(0., 5., 0.2)

# red dashes, blue squares and green triangles
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.show()

 

plt.figure()

你可以多次使用figure命令来产生多个图,其中,图片号按顺序增加。这里,要注意一个概念当前图和当前坐标。所有绘图操作仅对当前图和当前坐标有效。通常,你并不需要考虑这些事,下面的这个例子为大家演示这一细节。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import matplotlib.pyplot as plt
plt.figure(1)                # 第一张图
plt.subplot(211)             # 第一张图中的第一张子图
plt.plot([1,2,3])
plt.subplot(212)             # 第一张图中的第二张子图
plt.plot([4,5,6])


plt.figure(2)                # 第二张图
plt.plot([4,5,6])            # 默认创建子图subplot(111)

plt.figure(1)                # 切换到figure 1 ; 子图subplot(212)仍旧是当前图
plt.subplot(211)             # 令子图subplot(211)成为figure1的当前图
plt.title('Easy as 1,2,3')   # 添加subplot 211 的标题

 

figure感觉就是给图像ID,之后可以索引定位到它。

plt.text()添加文字说明

  • text()可以在图中的任意位置添加文字,并支持LaTex语法
  • xlable(), ylable()用于添加x轴和y轴标签
  • title()用于添加图的题目
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import matplotlib.pyplot as plt

mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)

# 数据的直方图
n, bins, patches = plt.hist(x, 50, normed=1, facecolor='g', alpha=0.75)


plt.xlabel('Smarts')
plt.ylabel('Probability')
#添加标题
plt.title('Histogram of IQ')
#添加文字
plt.text(60, .025, r'$\mu=100,\ \sigma=15$')
plt.axis([40, 160, 0, 0.03])
plt.grid(True)
plt.show()


text中前两个参数感觉应该是文本出现的坐标位置。

plt.annotate()文本注释

在数据可视化的过程中,图片中的文字经常被用来注释图中的一些特征。使用annotate()方法可以很方便地添加此类注释。在使用annotate时,要考虑两个点的坐标:被注释的地方xy(x, y)和插入文本的地方xytext(x, y)。[^1]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np
import matplotlib.pyplot as plt

ax = plt.subplot(111)

t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = plt.plot(t, s, lw=2)

plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
            arrowprops=dict(facecolor='black', shrink=0.05),
            )

plt.ylim(-2,2)
plt.show()


[^1]:DataHub-Python 数据可视化入门1

plt.xticks()/plt.yticks()设置轴记号

现在是明白干嘛用的了,就是人为设置坐标轴的刻度显示的值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 导入 matplotlib 的所有内容(nympy 可以用 np 这个名字来使用)
from pylab import *

# 创建一个 8 * 6 点(point)的图,并设置分辨率为 80
figure(figsize=(8,6), dpi=80)

# 创建一个新的 1 * 1 的子图,接下来的图样绘制在其中的第 1 块(也是唯一的一块)
subplot(1,1,1)

X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)

# 绘制余弦曲线,使用蓝色的、连续的、宽度为 1 (像素)的线条
plot(X, C, color="blue", linewidth=1.0, linestyle="-")

# 绘制正弦曲线,使用绿色的、连续的、宽度为 1 (像素)的线条
plot(X, S, color="r", lw=4.0, linestyle="-")

plt.axis([-4,4,-1.2,1.2])
# 设置轴记号

xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
       [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])

yticks([-1, 0, +1],
       [r'$-1$', r'$0$', r'$+1$'])
# 在屏幕上显示
show()


当我们设置记号的时候,我们可以同时设置记号的标签。注意这里使用了 LaTeX。[^2]

[^2]:Matplotlib 教程

移动脊柱 坐标系

1
2
3
4
5
6
7
ax = gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

这个地方确实没看懂,囧,以后再说吧,感觉就是移动了坐标轴的位置。

plt.legend()添加图例

1
2
3
4
plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")
plot(X, S, color="red",  linewidth=2.5, linestyle="-", label="sine")

legend(loc='upper left')

matplotlib.pyplot

使用plt.style.use('ggplot')命令,可以作出ggplot风格的图片。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Import necessary packages
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('ggplot')
from sklearn import datasets
from sklearn import linear_model
import numpy as np
# Load data
boston = datasets.load_boston()
yb = boston.target.reshape(-1, 1)
Xb = boston['data'][:,5].reshape(-1, 1)
# Plot data
plt.scatter(Xb,yb)
plt.ylabel('value of house /1000 ($)')
plt.xlabel('number of rooms')
# Create linear regression object
regr = linear_model.LinearRegression()
# Train the model using the training sets
regr.fit( Xb, yb)
# Plot outputs
plt.scatter(Xb, yb,  color='black')
plt.plot(Xb, regr.predict(Xb), color='blue',
         linewidth=3)
plt.show()

给特殊点做注释

好吧,又是注释,多个例子参考一下!

我们希望在 2π/32π/3 的位置给两条函数曲线加上一个注释。首先,我们在对应的函数图像位置上画一个点;然后,向横轴引一条垂线,以虚线标记;最后,写上标签。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
t = 2*np.pi/3
# 作一条垂直于x轴的线段,由数学知识可知,横坐标一致的两个点就在垂直于坐标轴的直线上了。这两个点是起始点。
plot([t,t],[0,np.cos(t)], color ='blue', linewidth=2.5, linestyle="--")
scatter([t,],[np.cos(t),], 50, color ='blue')

annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
         xy=(t, np.sin(t)), xycoords='data',
         xytext=(+10, +30), textcoords='offset points', fontsize=16,
         arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

plot([t,t],[0,np.sin(t)], color ='red', linewidth=2.5, linestyle="--")
scatter([t,],[np.sin(t),], 50, color ='red')

annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
         xy=(t, np.cos(t)), xycoords='data',
         xytext=(-90, -50), textcoords='offset points', fontsize=16,
         arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

 

plt.subplot()

plt.subplot(2,3,1)表示把图标分割成2*3的网格。也可以简写plt.subplot(231)。其中,第一个参数是行数,第二个参数是列数,第三个参数表示图形的标号。

plt.axes()

我们先来看什么是Figure和Axes对象。在matplotlib中,整个图像为一个Figure对象。在Figure对象中可以包含一个,或者多个Axes对象。每个Axes对象都是一个拥有自己坐标系统的绘图区域。其逻辑关系如下^3

plt.axes-官方文档

  • axes() by itself creates a default full subplot(111) window axis.
  • axes(rect, axisbg=’w’) where rect = [left, bottom, width, height] in normalized (0, 1) units. axisbg is the background color for the axis, default white.
  • axes(h) where h is an axes instance makes h the current axis. An Axes instance is returned.

    rect=[左, 下, 宽, 高] 规定的矩形区域,rect矩形简写,这里的数值都是以figure大小为比例,因此,若是要两个axes并排显示,那么axes[2]的左=axes[1].左+axes[1].宽,这样axes[2]才不会和axes[1]重叠。

show code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
http://matplotlib.org/examples/pylab_examples/axes_demo.html

import matplotlib.pyplot as plt
import numpy as np

# create some data to use for the plot
dt = 0.001
t = np.arange(0.0, 10.0, dt)
r = np.exp(-t[:1000]/0.05)               # impulse response
x = np.random.randn(len(t))
s = np.convolve(x, r)[:len(x)]*dt  # colored noise

# the main axes is subplot(111) by default
plt.plot(t, s)
plt.axis([0, 1, 1.1*np.amin(s), 2*np.amax(s)])
plt.xlabel('time (s)')
plt.ylabel('current (nA)')
plt.title('Gaussian colored noise')

# this is an inset axes over the main axes
a = plt.axes([.65, .6, .2, .2], axisbg='y')
n, bins, patches = plt.hist(s, 400, normed=1)
plt.title('Probability')
plt.xticks([])
plt.yticks([])

# this is another inset axes over the main axes
a = plt.axes([0.2, 0.6, .2, .2], axisbg='y')
plt.plot(t[:len(r)], r)
plt.title('Impulse response')
plt.xlim(0, 0.2)
plt.xticks([])
plt.yticks([])

plt.show()

 

[^3]:绘图: matplotlib核心剖析

pyplot.pie参数

colors颜色

找出matpltlib.pyplot.plot中的colors可以取哪些值?

打印颜色值和对应的RGB值。

  • plt.axis('equal')避免比例压缩为椭圆

autopct

  • How do I use matplotlib autopct?
    1
    
    autopct enables you to display the percent value using Python string formatting. For example, if autopct='%.2f', then for each pie wedge, the format string is '%.2f' and the numerical percent value for that wedge is pct, so the wedge label is set to the string '%.2f'%pct.

Ich denke du magst

Origin blog.csdn.net/weixin_52071682/article/details/112210859
Empfohlen
Rangfolge