如何获得茎线颜色以匹配茎图中的标记颜色?

时间:2016-08-16 21:44:51

标签: matplotlib

茎线总是蓝色的:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.1, 2*np.pi, 10)

plt.stem(x, np.sin(x), markerfmt='o', label='sin')
plt.stem(x+0.05, np.cos(x), markerfmt='o', label='cos')
plt.legend()

plt.show()

农产品: stem lines don't match markers

我希望茎线与标记的颜色相匹配(第一个数据集为蓝色,第二个为绿色)。

3 个答案:

答案 0 :(得分:2)

您可以为plot添加每个词干的格式参数。请注意以下'b'来电中的'g'plt.stem参数。

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.1, 2*np.pi, 10)

#                            v---------- add these args
plt.stem(x,      np.sin(x), 'b', markerfmt='bo', label='sin')
plt.stem(x+0.05, np.cos(x), 'g', markerfmt='go', label='cos')
plt.legend()

plt.show()

enter image description here

答案 1 :(得分:1)

解决此问题的一种方法是在调用plt.stem后修改词干行。我们可以使用plt.getp(..., 'color')获取标记的颜色,并使用plt.setp将该颜色指定给干线:

x = np.linspace(0.1, 2*np.pi, 10)

markerline, stemlines, baseline = plt.stem(x, np.sin(x), markerfmt='o', label='sin')
plt.setp(stemlines, 'color', plt.getp(markerline,'color'))
plt.setp(stemlines, 'linestyle', 'dotted')


markerline, stemlines, baseline = plt.stem(x+0.05, np.cos(x), markerfmt='o', label='cos')
plt.setp(stemlines, 'color', plt.getp(markerline,'color'))
plt.setp(stemlines, 'linestyle', 'dotted')

plt.legend()
plt.show()

产生

stem lines match the marker

答案 2 :(得分:1)

import numpy as np
import matplotlib.pyplot as plt

x = [210 , 420, 630,840]
y = [1, 1, 1,1]
z = [100 , 200, 300,400]
plt.xlim(0,1000)
plt.ylim(-2,2)
markerline, stemlines, baseline = plt.stem(x, y, markerfmt='o', label='pcd')
plt.setp(stemlines, 'color', plt.getp(markerline,'color'))
plt.setp(stemlines, 'linestyle', 'dotted')

markerline, stemlines, baseline = plt.stem(z, y, markerfmt='go', label='can')
plt.setp(stemlines, 'color', plt.getp(markerline,'color'))
plt.setp(stemlines, 'linestyle', 'dotted')

plt.legend()
plt.show()

enter image description here