优化以下代码保证标签被分为两部分,分别在右上角和右下角,注意:不能将图形分成两个子图 import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 10, 1000) lines = [np.sin(x), np.cos(x), -np.cos(x), -np.sin(x)] line_styles = ['-', '-.', '--', ':'] line_colors = ['red', 'blue', 'green', 'black'] fig, ax = plt.subplots() ax.plot(x, lines[0], linestyle=line_styles[0], color=line_colors[0], label=f'part A') ax.plot(x, lines[1], linestyle=line_styles[1], color=line_colors[1], label=f'part B') ax.plot(x, lines[2], linestyle=line_styles[2], color=line_colors[2], label=f'part C') ax.plot(x, lines[3], linestyle=line_styles[3], color=line_colors[3], label=f'part D') ax.legend(loc='upper right' ) plt.show()
时间: 2023-06-16 21:03:58 浏览: 160
可以使用两个不同的坐标轴来实现标签被分为两部分的效果,具体代码如下:
```
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 1000)
lines = [np.sin(x), np.cos(x), -np.cos(x), -np.sin(x)]
line_styles = ['-', '-.', '--', ':']
line_colors = ['red', 'blue', 'green', 'black']
# 创建第一个坐标轴,画 part A 和 part B
fig, ax1 = plt.subplots()
ax1.plot(x, lines[0], linestyle=line_styles[0], color=line_colors[0], label=f'part A')
ax1.plot(x, lines[1], linestyle=line_styles[1], color=line_colors[1], label=f'part B')
ax1.legend(loc='upper right')
ax1.set_xlabel('x')
ax1.set_ylabel('y1')
# 创建第二个坐标轴,画 part C 和 part D
ax2 = ax1.twinx()
ax2.plot(x, lines[2], linestyle=line_styles[2], color=line_colors[2], label=f'part C')
ax2.plot(x, lines[3], linestyle=line_styles[3], color=line_colors[3], label=f'part D')
ax2.legend(loc='lower right')
ax2.set_ylabel('y2')
plt.show()
```
以上代码中,我们使用 `plt.subplots()` 创建了一个包含一个坐标轴的图形窗口,然后通过 `ax1.twinx()` 创建了一个与 `ax1` 共享 x 轴的第二个坐标轴 `ax2`,并将 `ax2` 的 y 轴标签放在右侧。在 `ax1` 中画 part A 和 part B,在 `ax2` 中画 part C 和 part D,并分别设置两个坐标轴的标签和图例。最后通过 `plt.show()` 显示图形。
阅读全文