python plt 的 scatter 的 marker 有哪一些? plot linestyle 有哪一些?
########################################
在 Python 的 matplotlib.pyplot (通常简写为 plt) 中,scatter 的 marker (标记样式) 和 plot 的 linestyle (线条样式) 非常丰富。
为了方便你查阅,我把常用的样式都整理成了表格,并在最后附带了一段可以快速预览所有样式的代码。
1. plt.scatter 的常用 marker (标记样式)
marker 参数决定了散点图中每个点长成什么样。你可以使用字符简写,也可以使用特定的几何图形名称。
|
字符简写 |
对应图形 |
说明 |
|
'.' |
Point |
点 |
|
',' |
Pixel |
像素点(极小) |
|
'o' |
Circle |
实心圆(最常用) |
|
'v' |
Triangle Down |
朝下三角形 |
|
'^' |
Triangle Up |
朝上三角形 |
|
'<' |
Triangle Left |
朝左三角形 |
|
'>' |
Triangle Right |
朝右三角形 |
|
's' |
Square |
正方形 |
|
'p' |
Pentagon |
五边形 |
|
'*' |
Star |
五角星 |
|
'h' / 'H' |
Hexagon |
六边形 |
|
'+' |
Plus |
加号 |
|
'x' |
X |
X 形 |
|
'D' |
Diamond |
钻石形/菱形 |
|
'd' |
Thin Diamond |
瘦菱形 |
|
`' |
'` |
Vline |
|
'_' |
Hline |
水平线 |
高级技巧:你甚至可以使用 LaTeX 字符作为标记,例如 marker=r'$\alpha$' 会在图上画出 α 符号;或者传入 (nums, sides) 元组自定义多边形。
2. plt.plot 的 linestyle (线条样式)
linestyle(或缩写 ls)决定了折线图或线性图的线条纹理。主要有以下 4 种基础样式:
|
字符简写 |
完整名称 |
样式效果说明 |
|
'-' |
'solid' |
实线(默认) |
|
'--' |
'dashed' |
虚线 / 短划线 |
|
'-.' |
'dashdot' |
点划线(线点相间) |
|
':' |
'dotted' |
点线 / 点状虚线 |
|
'' 或 ' ' |
'None' |
无线条(只画点,不连线) |
高级技巧:如果你需要更精细的控制,可以传入一个元组自定义虚线的间隔。例如 linestyle=(0, (5, 10)) 表示 (起始偏移量, (5个像素的线, 10个像素的空白))。
3. 快速预览代码
如果你想亲眼看看它们长什么样,可以直接在 Jupyter Notebook 或 Python 脚本中运行下面这段代码:
Python
import matplotlib.pyplot as plt
# 1. 预览 linestyle
plt.figure(figsize=(10, 4))
linestyles = ['-', '--', '-.', ':']
for i, ls in enumerate(linestyles):
plt.plot([0, 5], [i, i], linestyle=ls, line, label=f"ls='{ls}'")
plt.title("Matplotlib Linestyles")
plt.legend()
plt.ylim(-1, len(linestyles))
plt.show()
# 2. 预览部分常用 marker
plt.figure(figsize=(10, 3))
markers = ['o', 'v', '^', 's', 'p', '*', 'h', 'x', 'D', '+']
for i, mk in enumerate(markers):
plt.scatter(i, 1, marker=mk, s=300, label=f"'{mk}'") # s 为大小
plt.text(i, 0.8, f"'{mk}'", ha='center')
plt.title("Matplotlib Markers (Selection)")
plt.xlim(-1, len(markers))
plt.ylim(0.5, 1.5)
plt.axis('off')
plt.show()
这些样式能够满足绝大多数的数据可视化需求。你目前是在调整哪类图表的样式呢?如果有特殊的定制需求(比如调整标记颜色、边框等),可以告诉我!

留言板
歡迎留下建議與分享!希望一起交流!感恩!