Python Matplotlib stackplot 中的标签区域
Label Areas in Python Matplotlib stackplot
我想在 matplotlib 堆栈图的区域内生成标签。我会满足于标记一条用于限制该区域的线。考虑这个例子:
import numpy as np
from matplotlib import pyplot as plt
fnx = lambda : np.random.randint(5, 50, 10)
x = np.arange(10)
y1, y2, y3 = fnx(), fnx(), fnx()
areaLabels=['area1','area2','area3']
fig, ax = plt.subplots()
ax.stackplot(x, y1, y2, y3)
plt.show()
这会产生:
但我想制作这样的东西:
matplotlib 等高线图具有这种类型的标记功能(尽管在等高线图的情况下线条被标记)。
任何帮助(甚至重定向到我可能错过的 post)都将不胜感激。
啊,启发式。是这样的吗?:
import numpy as np
from matplotlib import pyplot as plt
length = 10
fnx = lambda : np.random.randint(5, 50, length)
x = np.arange(length)
y1, y2, y3 = fnx(), fnx(), fnx()
areaLabels=['area1','area2','area3']
fig, ax = plt.subplots()
ax.stackplot(x, y1, y2, y3)
loc = y1.argmax()
ax.text(loc, y1[loc]*0.25, areaLabels[0])
loc = y2.argmax()
ax.text(loc, y1[loc] + y2[loc]*0.33, areaLabels[1])
loc = y3.argmax()
ax.text(loc, y1[loc] + y2[loc] + y3[loc]*0.75, areaLabels[2])
plt.show()
在测试运行中还可以:
找到最好的 loc
可能更有趣——也许有人想要具有最高平均值的 x_n, x_(n+1)
。
我想在 matplotlib 堆栈图的区域内生成标签。我会满足于标记一条用于限制该区域的线。考虑这个例子:
import numpy as np
from matplotlib import pyplot as plt
fnx = lambda : np.random.randint(5, 50, 10)
x = np.arange(10)
y1, y2, y3 = fnx(), fnx(), fnx()
areaLabels=['area1','area2','area3']
fig, ax = plt.subplots()
ax.stackplot(x, y1, y2, y3)
plt.show()
这会产生:
但我想制作这样的东西:
matplotlib 等高线图具有这种类型的标记功能(尽管在等高线图的情况下线条被标记)。
任何帮助(甚至重定向到我可能错过的 post)都将不胜感激。
啊,启发式。是这样的吗?:
import numpy as np
from matplotlib import pyplot as plt
length = 10
fnx = lambda : np.random.randint(5, 50, length)
x = np.arange(length)
y1, y2, y3 = fnx(), fnx(), fnx()
areaLabels=['area1','area2','area3']
fig, ax = plt.subplots()
ax.stackplot(x, y1, y2, y3)
loc = y1.argmax()
ax.text(loc, y1[loc]*0.25, areaLabels[0])
loc = y2.argmax()
ax.text(loc, y1[loc] + y2[loc]*0.33, areaLabels[1])
loc = y3.argmax()
ax.text(loc, y1[loc] + y2[loc] + y3[loc]*0.75, areaLabels[2])
plt.show()
在测试运行中还可以:
找到最好的 loc
可能更有趣——也许有人想要具有最高平均值的 x_n, x_(n+1)
。