Matplotlib Markers (曲线标记)

2023-10-19 14:10

本文主要是介绍Matplotlib Markers (曲线标记),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

当使用 Matplotlib 画图时,有时不仅需要改变颜色,也需要各种不同的标记。这里详述处理标记的函数,应用于 plot、scatter 和 errorbar 的标记函数。

1.常用标记

所有可能的标记如下所示:

markersymboldescription
"."在这里插入图片描述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
`""`在这里插入图片描述
"_"在这里插入图片描述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
'$...$'在这里插入图片描述使用 mathtext 渲染字符串。 例如,“$f$”表示显示字母 f 的标记。
verts用于路径顶点的 (x, y) 对列表。 标记的中心位于 (0, 0) 处,并且尺寸被归一化,这样创建的路径就被封装在单元格内。

None 是默认值,表示“无”,但是此表是从其他文档中引用的,用于标记输入的有效输入,在这些情况下,None 仍然表示“默认”。

请注意,可以通过 STIX 数学字体定义特殊符号,例如 “$\u266B$”。 有关 STIX 字体符号的概述,请参阅 STIX 字体表。 另请参阅 STIX 字体。

011 的整数创建直线和三角形。 这些同样可以通过大写变量访问,例如 CARETDOWNBASE。 因此以下是等价的:

plt.plot([1, 2, 3], marker=11)
plt.plot([1, 2, 3], marker=matplotlib.markers.CARETDOWNBASE)

2.Marker参考

Matplotlib 支持使用绘图命令的标记参数选择的多个类别的标记。

import matplotlib.pyplot as plt
from matplotlib.lines import Line2Dtext_style = dict(horizontalalignment='right', verticalalignment='center',fontsize=12, fontfamily='monospace')
marker_style = dict(linestyle=':', color='0.8', markersize=10,markerfacecolor="tab:blue", markeredgecolor="tab:blue")def format_axes(ax):ax.margins(0.2)ax.set_axis_off()ax.invert_yaxis()def split_list(a_list):i_half = len(a_list) // 2return a_list[:i_half], a_list[i_half:]

(1) 非填充标记 (Unfilled markers)

非填充的标记是单色的。

fig, axs = plt.subplots(ncols=2)
fig.suptitle('Un-filled markers', fontsize=14)# Filter out filled markers and marker settings that do nothing.
unfilled_markers = [m for m, func in Line2D.markers.items()if func != 'nothing' and m not in Line2D.filled_markers]for ax, markers in zip(axs, split_list(unfilled_markers)):for y, marker in enumerate(markers):ax.text(-0.5, y, repr(marker), **text_style)ax.plot([y] * 3, marker=marker, **marker_style)format_axes(ax)plt.show()

在这里插入图片描述

(2) 填充标记 (Filled markers)

fig, axs = plt.subplots(ncols=2)
fig.suptitle('Filled markers', fontsize=14)
for ax, markers in zip(axs, split_list(Line2D.filled_markers)):for y, marker in enumerate(markers):ax.text(-0.5, y, repr(marker), **text_style)ax.plot([y] * 3, marker=marker, **marker_style)format_axes(ax)plt.show()

在这里插入图片描述

(3) 标记填充样式 (Marker fill styles)

填充标记的边缘颜色和填充颜色可以单独指定。 此外,填充样式可以配置为在各个方向上未填充、完全填充或半填充。 半填充样式使用 markerfacecoloralt 作为辅助填充颜色。

fig, ax = plt.subplots()
fig.suptitle('Marker fillstyle', fontsize=14)
fig.subplots_adjust(left=0.4)filled_marker_style = dict(marker='o', linestyle=':', markersize=15,color='darkgrey',markerfacecolor='tab:blue',markerfacecoloralt='lightsteelblue',markeredgecolor='brown')for y, fill_style in enumerate(Line2D.fillStyles):ax.text(-0.5, y, repr(fill_style), **text_style)ax.plot([y] * 3, fillstyle=fill_style, **filled_marker_style)
format_axes(ax)plt.show()

在这里插入图片描述

(4) 从 TeX 符号创建的标记 (Markers created from TeX symbols)

使用 MathText,可使用自定义标记符号,例如 “$\u266B$”。 有关 STIX 字体符号的概述,请参阅 STIX 字体表。 另请参阅 STIX 字体。

fig, ax = plt.subplots()
fig.suptitle('Mathtext markers', fontsize=14)
fig.subplots_adjust(left=0.4)marker_style.update(markeredgecolor="none", markersize=15)
markers = ["$1$", r"$\frac{1}{2}$", "$f$", "$\u266B$", r"$\mathcal{A}$"]for y, marker in enumerate(markers):# Escape dollars so that the text is written "as is", not as mathtext.ax.text(-0.5, y, repr(marker).replace("$", r"\$"), **text_style)ax.plot([y] * 3, marker=marker, **marker_style)
format_axes(ax)plt.show()

在这里插入图片描述

(5) 从路径创建的标记 (Markers created from Paths)

任何路径都可以用作标记。 下面的示例显示了两条简单的路径星形和圆形,以及更精细的带有切割星形的圆形路径。

import matplotlib.path as mpath
import numpy as npstar = mpath.Path.unit_regular_star(6)
circle = mpath.Path.unit_circle()
# concatenate the circle with an internal cutout of the star
cut_star = mpath.Path(vertices=np.concatenate([circle.vertices, star.vertices[::-1, ...]]),codes=np.concatenate([circle.codes, star.codes]))fig, ax = plt.subplots()
fig.suptitle('Path markers', fontsize=14)
fig.subplots_adjust(left=0.4)markers = {'star': star, 'circle': circle, 'cut_star': cut_star}for y, (name, marker) in enumerate(markers.items()):ax.text(-0.5, y, name, **text_style)ax.plot([y] * 3, marker=marker, **marker_style)
format_axes(ax)plt.show()

在这里插入图片描述

3.Marker 示例

import numpy as np
import matplotlib.pyplot as plt# Fixing random state for reproducibility
np.random.seed(19680801)x = np.random.rand(10)
y = np.random.rand(10)
z = np.sqrt(x**2 + y**2)fig, axs = plt.subplots(2, 3, sharex=True, sharey=True)# marker symbol
axs[0, 0].scatter(x, y, s=80, c=z, marker=">")
axs[0, 0].set_title("marker='>'")# marker from TeX
axs[0, 1].scatter(x, y, s=80, c=z, marker=r'$\alpha$')
axs[0, 1].set_title(r"marker=r'\$\alpha\$'")# marker from path
verts = [[-1, -1], [1, -1], [1, 1], [-1, -1]]
axs[0, 2].scatter(x, y, s=80, c=z, marker=verts)
axs[0, 2].set_title("marker=verts")# regular polygon marker
axs[1, 0].scatter(x, y, s=80, c=z, marker=(5, 0))
axs[1, 0].set_title("marker=(5, 0)")# regular star marker
axs[1, 1].scatter(x, y, s=80, c=z, marker=(5, 1))
axs[1, 1].set_title("marker=(5, 1)")# regular asterisk marker
axs[1, 2].scatter(x, y, s=80, c=z, marker=(5, 2))
axs[1, 2].set_title("marker=(5, 2)")plt.tight_layout()
plt.show()

结果图形如下:

在这里插入图片描述

参考资源

[1] matplotlib.markers
[2] Marker reference
[3] Marker examples

这篇关于Matplotlib Markers (曲线标记)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/240319

相关文章

脏页的标记方式详解

脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓

三色标记(Tri-color marking)

维基百科部分 原文 https://en.wikipedia.org/wiki/Tracing_garbage_collection#TRI-COLOR Because of these performance problems, most modern tracing garbage collectors implement some variant of the tri-color ma

PR曲线——一个更敏感的性能评估工具

在不均衡数据集的情况下,精确率-召回率(Precision-Recall, PR)曲线是一种非常有用的工具,因为它提供了比传统的ROC曲线更准确的性能评估。以下是PR曲线在不均衡数据情况下的一些作用: 关注少数类:在不均衡数据集中,少数类的样本数量远少于多数类。PR曲线通过关注少数类(通常是正类)的性能来弥补这一点,因为它直接评估模型在识别正类方面的能力。 精确率与召回率的平衡:精确率(Pr

matplotlib绘图中插入图片

在使用matplotlib下的pyplot绘图时,有时处于各种原因,需要采用类似贴图的方式,插入外部的图片,例如添加自己的logo,或者其他的图形水印等。 一开始,查找到的资料都是使用imshow,但是这会有带来几个问题,一个是图形的原点发生了变化,另外一个问题就是图形比例也产生了变化,当然最大的问题是图形占据了整个绘图区域,完全喧宾夺主了,与我们设想的只在绘图区域中占据很小的一块不相符。 经

matplotlib中文乱码问题

在使用Matplotlib进行数据可视化的过程中,经常会遇到中文乱码的问题。显示乱码是由于编码问题导致的,而matplotlib 默认使用ASCII 编码,但是当使用pyplot时,是支持unicode编码的,只是默认字体是英文字体,导致中文无法正常显示,所以显示中文乱码。 文本使用系统默认字体、手动指定字体、使用字体管理器来解决。 一、系统默认字体(全局设置字体) 在Matplotlib中

Matplotlib图像读取和输出及jpg、png格式对比,及透明通道alpha设置

图像像素值 图像像素值一般size为3,也就是通道数,分别代表R,G,B,如果只有单一 一个值则表示灰度值,也就是说一张二维图片,当长和宽都为1080时,那么若是灰度图像,图像尺寸为(1080,1080,1)若是RGB图像则为(1080,1080,3), jpg、png图像格式 jpg图像的灰度值范围和RGB范围为[0,255],数值类型为uint8,也就是无符号整数 png图像的灰度值范

使用matplotlib绘制散点图、柱状图和饼状图-学习篇

一、散点图 Python代码如下: num_points = 100x = np.random.rand(num_points) #x点位随机y = np.random.rand(num_points) #y点位随机colors = np.random.rand(num_points) #颜色随机sizes = 1000 * np.random.rand(num_points) # 大

【造轮子】纯C++实现的联通组件标记算法

学习《OpenCV应用开发:入门、进阶与工程化实践》一书 做真正的OpenCV开发者,从入门到入职,一步到位! 连接组件标记算法 连接组件标记算法(connected component labeling algorithm-CCL)是图像分析中最常用的算法之一,算法的实质是扫描一幅图像的每个像素,对于像素值相同的分为相同的组(group),最终得到图像中所有的像素连通组件。扫描的方式可以是从

Matlab中BaseZoom()函数实现曲线和图片的局部放大

BaseZoom工具下载链接: 链接:https://pan.baidu.com/s/1yItVSinh6vU4ImlbZW6Deg?pwd=9dyl 提取码:9dyl 下载完之后将工具包放置合适的路径下,并在matlab中“设置路径”中添加相应的路径; 注:可以先运行如下图片中的语句,看看是否报错;如果报如下错误,说明matlab未安装“Image Processing Toolbox”工

Matplotlib通过axis()配置坐标轴数据详解

坐标轴范围设置 axis()可以直接传入列表[xmin,xmax,ymin,ymax]进行范围设置, 分别可以使用plt.axis()或者画布对象.axis()进行配置 import numpy as npimport matplotlib.pyplot as pltx = np.linspace(0, 20, 100)y = x*2plt.plot(x, y, 'r')plt.ax