我使用matplotlib
绘制了以下图表:
使用的代码如下所示:
import matplotlib.pyplot as plt
import numpy as np
# Generate data
x = np.linspace(0, 10, 10, dtype=float)
x_mid = x[:-1] + np.diff(x) / 2.0
y = np.random.rand(len(x) - 1) * 100
yerr = np.random.rand(len(x) - 1) * 20
# Plot
fig = plt.figure()
ax = fig.add_subplot()
ax.errorbar(x_mid, y=y, yerr=yerr, color='blue', fmt='o', markersize=10, label='Data')
ax.stairs(y, x, baseline=None, color='blue', linewidth=2, linestyle='solid', label='Data')
ax.legend()
plt.show()
我在生成图例时遇到了困难。虽然我可以使用Line2D([0], [0], marker='|', ls='-', c='blue', markersize=16, markeredgewidth=16)
生成十字线,但它中间没有点。
我无法生成一个中间有一个点的十字线,如何才能达到我的目的呢?在Line2D生成的十字线中间叠加一个点是可行的,但是如何操作呢?
1条答案
按热度按时间ddrv8njm1#
在最新的matplotlib版本中,如果将图例句柄组合成一个元组,它们将被绘制在彼此的顶部。
对于元组,matplotlib自动使用
HandlerTupple
作为图例处理器,并使用默认参数。legend guide包含了一些不同选项的示例。