使用matplotlib绘制多个图形
每当我想用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种组合(不过,白色不算在内...)。