使用matplotlib绘制多个图形

4 投票
1 回答
4952 浏览
提问于 2025-04-17 07:40

每当我想用matplotlib画多个二维线图时,我会先定义两个列表:

coloTypesList=["b","g","r","c","m","y","k"];

这个列表里是不同的颜色,比如“b”代表蓝色,“g”代表绿色等等。

drawTypesList=["-","--","x"];

这个列表里是不同的线条样式,比如“-”是实线,“--”是虚线,“x”是交叉线。

然后在每次画图的时候,我会从这两个列表中选一对颜色和线条样式来用。不过,这种方法只适合我画少于22个图的情况。有没有什么办法可以让这个方法更通用一点,能处理更多的颜色和线条样式呢?

1 个回答

8

根据你提供的列表,你有21种组合:

>>> from itertools import product
>>> markers = ["-", "--", "x"]
>>> colors = ["b", "g", "r", "c", "m", "y", "k"]
>>> [a + b for a, b in product(colors, markers)]
['b-', 'b--', 'bx', 'g-', 'g--', 'gx', 'r-', 'r--', 'rx', 'c-', 'c--', 'cx', 'm-', 'm--', 'mx', 'y-', 'y--', 'yx', 'k-', 'k--', 'kx']

不过,实际上可选的组合比你现在用的要多得多:

线条样式或标记:

================    ===============================
character           description
================    ===============================
``'-'``             solid line style
``'--'``            dashed line style
``'-.'``            dash-dot line style
``':'``             dotted line style
``'.'``             point marker
``','``             pixel marker
``'o'``             circle marker
``'v'``             triangle_down marker
``'^'``             triangle_up marker
``'<'``             triangle_left marker
``'>'``             triangle_right marker
``'1'``             tri_down marker
``'2'``             tri_up marker
``'3'``             tri_left marker
``'4'``             tri_right marker
``'s'``             square marker
``'p'``             pentagon marker
``'*'``             star marker
``'h'``             hexagon1 marker
``'H'``             hexagon2 marker
``'+'``             plus marker
``'x'``             x marker
``'D'``             diamond marker
``'d'``             thin_diamond marker
``'|'``             vline marker
``'_'``             hline marker
================    ===============================

颜色缩写:

==========  ========
character   color
==========  ========
'b'         blue
'g'         green
'r'         red
'c'         cyan
'm'         magenta
'y'         yellow
'k'         black
'w'         white
==========  ========

注意,你可以用RGB或RGBA的方式来指定颜色,比如(0, 1, 0, 1),这样你就可以创建一个完整的调色板。只要在你现在的颜色基础上增加一些浅色或深色版本,你就能大大增加你的选择可能性。

我不太确定在一个图中需要这么多标记和颜色的组合。假设你只使用标准颜色,最多可以有26 * 8 = 208种组合(不过,白色不算在内...)。

撰写回答