📜  Python中的 Matplotlib.markers 模块

📅  最后修改于: 2022-05-13 01:55:00.489000             🧑  作者: Mango

Python中的 Matplotlib.markers 模块

Matplotlib是Python中用于数组二维图的惊人可视化库。 Matplotlib 是一个基于 NumPy 数组构建的多平台数据可视化库,旨在与更广泛的 SciPy 堆栈配合使用。

Matplotlib.markers

matplotlib.dates 模块提供处理 Matplotlib 中标记的函数。绘图和散点图的标记功能都使用它。
下表定义了 matplotlib 中所有可能的标记:

MarkerDescription
“.”point
“, “pixel
“o”circle
“v”triangle_down
“^”triangle_up
“<“triangle_left
“>”triangle_right
“1”tri_down
“2”tri_up
“3”tri_left
“4”tri_right
“8”octagon
“s”square
“p”pentagon
“P”plus (filled)
“*”star
“h”hexagon1
“H”hexagon2
“+”plus
“x”x
“X”x (filled)
“D”diamond
“d”thin_diamond
“|”vline
“_”hline
0 (TICKLEFT)tickleft
1 (TICKRIGHT)tickright
2 (TICKUP)tickup
3 (TICKDOWN)tickdown
4 (CARETLEFT)caretleft
5 (CARETRIGHT)caretright
6 (CARETUP)caretup
7 (CARETDOWN)caretdown
8 (CARETLEFTBASE)caretleft (centered at base)
9 (CARETRIGHTBASE)caretright (centered at base)
10 (CARETUPBASE)caretup (centered at base)
11 (CARETDOWNBASE)caretdown (centered at base)
“None”, ” ” or “”nothing
‘$…$’Render the string using mathtext. E.g “$r$” for marker showing the letter r.
vertsA list of (x, y) pairs used for Path vertices. The center of the marker is located at (0, 0) and the size is normalized, such that the created path is encapsulated inside the unit cell.
pathA Path instance
(numsides, style, angle)The marker can also be a tuple (numsides, style, angle), which will create a custom, regular symbol. 
A) numsides: the number of sides
B) style: the style of the regular symbol, 
0: a regular polygon 
1: a star-like symbol 
2: an asterisk
C) angle: the angle of rotation of the symbol 

 

注意:需要注意的是下面两行代码是等价的,

# line 1
plt.plot([1, 2, 3], marker = 9)

# line 2
plt.plot([1, 2, 3], marker = matplotlib.markers.CARETRIGHTBASE)

示例 1:

Python3
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
 
 
# Draw 5 points for each line
each_point = np.ones(5) 
style = dict(color = 'tab:green',
             linestyle = ':',
             marker = 'D',
             markersize = 15,
             markerfacecoloralt = 'tab:red')
 
figure, axes = plt.subplots()
 
# Plot all filling styles.
for y, fill_style in enumerate(Line2D.fillStyles):
     
    axes.text(-0.5, y,
              repr(fill_style),
              horizontalalignment = 'center',
              verticalalignment = 'center')
     
    axes.plot(y * each_point, fillstyle = fill_style,
              **style)
 
axes.set_axis_off()
axes.set_title('filling style')
 
plt.show()


Python3
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
 
 
# Drawing 3 points for each line
plotted_points = np.ones(4)
txt_style = dict(horizontalalignment = 'right',
                 verticalalignment = 'center',
                 fontsize = 12,
                 fontdict = {'family': 'monospace'})
 
style = dict(linestyle = ':',
             color ='0.5',
             markersize = 10,
             mfc ="C0",
             mec ="C0")
 
 
# helper function for axes formatting
def format_ax(ax):
     
    ax.margins(0.2)
    ax.set_axis_off()
    ax.invert_yaxis()
 
 
# helper function for splitting list
def split(a_list):
     
    i_half = len(a_list) // 2
    return (a_list[:i_half], a_list[i_half:])
 
figure, axes = plt.subplots(ncols = 2)
 
for ax, markers in zip(axes, split(Line2D.filled_markers)):
     
    for y, marker in enumerate(markers):
         
        ax.text(-0.5, y, repr(marker), **txt_style)
        ax.plot(y * plotted_points, marker = marker,
                **style)
         
    format_ax(ax)
     
figure.suptitle('filled markers', fontsize = 14)
 
plt.show()


输出:

示例 2:

Python3

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
 
 
# Drawing 3 points for each line
plotted_points = np.ones(4)
txt_style = dict(horizontalalignment = 'right',
                 verticalalignment = 'center',
                 fontsize = 12,
                 fontdict = {'family': 'monospace'})
 
style = dict(linestyle = ':',
             color ='0.5',
             markersize = 10,
             mfc ="C0",
             mec ="C0")
 
 
# helper function for axes formatting
def format_ax(ax):
     
    ax.margins(0.2)
    ax.set_axis_off()
    ax.invert_yaxis()
 
 
# helper function for splitting list
def split(a_list):
     
    i_half = len(a_list) // 2
    return (a_list[:i_half], a_list[i_half:])
 
figure, axes = plt.subplots(ncols = 2)
 
for ax, markers in zip(axes, split(Line2D.filled_markers)):
     
    for y, marker in enumerate(markers):
         
        ax.text(-0.5, y, repr(marker), **txt_style)
        ax.plot(y * plotted_points, marker = marker,
                **style)
         
    format_ax(ax)
     
figure.suptitle('filled markers', fontsize = 14)
 
plt.show()

输出: