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

ece*_*ulm 8 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()
Run Code Online (Sandbox Code Playgroud)

生产: 干线与标记不匹配

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

Mr *_*ooz 10

您可以为每个词干添加格式化参数,就像为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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


ece*_*ulm 5

解决此问题的一种方法是在调用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()
Run Code Online (Sandbox Code Playgroud)

产生:

干线与标记匹配


Ran*_*til 5

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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述