"ValueError: Unrecognized marker style -d" when looping over markers
"ValueError: Unrecognized marker style -d" when looping over markers
我正在尝试编写允许不同标记样式的 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'
它returns错误:
...
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 -*-
)作为前缀。没有帮助。
我必须转义标记字符串还是这里有什么问题?
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])
我正在尝试编写允许不同标记样式的 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'
它returns错误:
...
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 -*-
)作为前缀。没有帮助。
我必须转义标记字符串还是这里有什么问题?
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])