优化以下代码保证标签被分为两部分,分别在右上角和右下角 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 20:04:04 浏览: 382
下面是优化后的代码:
```python
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, axs = plt.subplots(nrows=2, ncols=1, sharex=True, sharey=True, figsize=(8, 6))
axs[0].plot(x, lines[0], linestyle=line_styles[0], color=line_colors[0], label=f'part A')
axs[0].plot(x, lines[1], linestyle=line_styles[1], color=line_colors[1], label=f'part B')
axs[1].plot(x, lines[2], linestyle=line_styles[2], color=line_colors[2], label=f'part C')
axs[1].plot(x, lines[3], linestyle=line_styles[3], color=line_colors[3], label=f'part D')
axs[0].legend(loc='upper right')
axs[1].legend(loc='lower right')
plt.show()
```
这个代码将原来一个图形分成了两个子图,分别在右上角和右下角。使用 `subplots()` 函数创建了一个具有两行一列的网格,每个子图都是独立的轴对象,并通过 `sharex` 和 `sharey` 参数共享了相同的 x 轴和 y 轴刻度线。然后,我们在两个子图中分别绘制四条线,并在每个子图中设置相应的标签和图例位置。最后,使用 `plt.show()` 显示图形。
阅读全文