我试图编写允许不同标记样式的pyplot
图表。这些图是在循环中生成的。从列表中选择标记。
出于演示目的,我还包括一个颜色列表。
版本为Python 2.7.9
,IPython 3.0.0
,matplotlib 1.4.3.
这是一个简单的代码示例:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(0,10)
y=x**2
markers=['d','-d','-']
colors=['red', 'green', 'blue']
for i in range(len(markers)):
plt.plot(x, y, marker=markers[i], color=colors[i])
plt.show()
这设法只生成标记=' d'的图,对于标记'-d'
,它返回错误:
...
C:\Users\batman\AppData\Local\Continuum\Anaconda\lib\site-packages\matplotlib\markers.pyc in set_marker(self, marker)
245 self._marker_function = self._set_vertices
246 except ValueError:
--> 247 raise ValueError('Unrecognized marker style {}'.format(marker))
248
249 self._marker = marker
ValueError: Unrecognized marker style -d
但,我可以通过编写plt.plot(x, y, markers[i], color=colors[i])
来使其工作。
比较color=...
。
我认为它与特殊字符有关。
我试过其他标记:
标记.
,*
有效。
标记:
,--
没有。
我尝试使用r
或u
(带# -*- coding: utf-8 -*-
)为标记字符串添加前缀。没有帮助。
我是否必须逃避标记字符串或这里有什么问题?
答案 0 :(得分:3)
markers
描述使用plt.plot
绘制的点。例如,您可以使用'o', 's', 'D', '^', 'v' '*', '.', ','
等。有关可用选项的完整列表,请参阅here。
'-', '--', ':', '-.'
不是标记,而是线条样式。
所以,这取决于你想要绘制的内容。如果你想要一个带有钻石标记的Axes
对象,另一个带有钻石标记和一条线的对象,以及一个只有一条线的最终对象,你可以这样做:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(0,10)
y=x**2
markers=['d','d','None']
lines=['None','-','-']
colors=['red', 'green', 'blue']
for i in range(len(markers)):
# I've offset the second and third lines so you can see the differences
plt.plot(x, y + i*10, marker=markers[i], linestyle=lines[i], color=colors[i])