当我使用matplotlib绘制一些图形时,图例总是在图形之外。如何将传说保留在情节中?您可以看到结果here
我尝试bbox_to_anchor
可以工作。但这不方便,因为我不想每次绘制新图形时都要修改位置。
代码只是重现我的问题的示例。
import matplotlib.pyplot as plt
import numpy as np
time_step = np.arange(0, 200.01, 40).tolist()
drag3 = [1, 1, 1, 1, 1, 1]
lift3 = [1.5, 1, 1, 1, 1, 0.2]
second_drag3 = [1.2, 1.2, 1.2, 1.3, 1.2, 0.5]
second_lift3 = [1.2, 1.2, 1.2, 1.3, 1.2, 0.8]
fig, ax1 = plt.subplots()
ax1.plot(time_step, drag3, label="40$C_D1$", color='blue', linestyle='-', linewidth=1.0)
ax1.plot(time_step, second_drag3, label="40$C_D2$", color='darkviolet', linestyle='-', linewidth=1.0)
ax2 = ax1.twinx()
ax2.plot(time_step, lift3, label="40$C_L1$", color='red', linestyle='-', linewidth=1.0)
ax2.plot(time_step, second_lift3, label="40$C_L2$", color='limegreen', linestyle='-', linewidth=1.0)
plt.tight_layout()
fig.legend(loc='lower right', ncol=2)
plt.show()
我想将所有图例保留在情节内。
感谢您的帮助!
答案 0 :(得分:0)
您可以通过在图例调用中添加“ borderaxespad” kwarg在轴和图例之间添加额外的填充:
class Grid extends React.Component {
renderSquare(i) {
return <Square value={i} />;
}
render() {
return (
// v <React.Fragment>
<>
<div className="gamerow">
{this.renderSquare(1)}
{this.renderSquare(2)}
{this.renderSquare(3)}
</div>
<div className="gamerow">
{this.renderSquare(4)}
{this.renderSquare(5)}
{this.renderSquare(6)}
</div>
<div className="gamerow">
{this.renderSquare(7)}
{this.renderSquare(8)}
{this.renderSquare(9)}
</div>
</>
)
}
}
这将在图例和图形边界之间添加额外的空间,因此当它位于右下角时,它将向上和向左移动。如果它在左下角,它将向上和向右移动。