matplotlib 子图共用x轴
时间: 2023-07-12 12:11:50 浏览: 52
要让 matplotlib 子图共用 x 轴,可以使用 `sharex` 参数。具体的实现步骤如下:
1. 导入 matplotlib 库
```python
import matplotlib.pyplot as plt
```
2. 创建子图
```python
fig, axs = plt.subplots(nrows=2, ncols=1, sharex=True)
```
其中,`nrows` 和 `ncols` 分别表示行数和列数,`sharex=True` 表示这些子图都共用同一个 x 轴。
3. 绘制数据
```python
axs[0].plot(x, y1)
axs[1].plot(x, y2)
```
其中,`axs[0]` 和 `axs[1]` 分别表示第一个子图和第二个子图。
4. 显示图像
```python
plt.show()
```
完整的代码示例:
```python
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 8, 10]
y2 = [1, 3, 5, 7, 9]
fig, axs = plt.subplots(nrows=2, ncols=1, sharex=True)
axs[0].plot(x, y1)
axs[1].plot(x, y2)
plt.show()
```
相关问题
matplotlib共用x轴
共用x轴是指在matplotlib中,可以在同一张图中绘制多个子图,这些子图共享相同的x轴。这样可以方便地比较不同数据之间的关系。有几种方法可以实现共用x轴的效果。
一种方法是使用`plt.subplots`函数创建多个子图,并使用`ax.twinx()`函数创建共用x轴的第二个y轴。然后,分别在两个子图上绘制不同的数据。例如,可以使用以下代码实现共用x轴的效果:
```python
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.1)
y1 = 0.05 * x**2
y2 = -1 * y1
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(x, y1, 'g-')
ax2.plot(x, y2, 'b-')
ax1.set_xlabel("X data")
ax1.set_ylabel("Y1", color='g')
ax2.set_ylabel("Y2", color='b')
plt.show()
```
另一种方法是在同一张图上使用`plt.bar`函数绘制多个柱状图,并使用正负值来表示不同的数据。可以使用`plt.ylim`函数设置y轴的范围,以便显示正负值。例如,可以使用以下代码实现共用x轴的效果:
```python
import matplotlib.pyplot as plt
import numpy as np
x_data = \["20{}".format(i) for i in range(18, 23)\]
y_data = np.random.randint(100, 300, 5)
y2_data = np.random.randint(100, 300, 5)
plt.bar(x_data, +y_data, width=0.3, label="IPhone")
plt.bar(x_data, -y2_data, width=0.3, label="Android")
plt.ylabel("sale")
plt.xlabel("year")
plt.ylim(-350, 350)
plt.yticks(\[300, 200, 100, 0, -100, -200, -300\], \[300, 200, 100, 0, 100, 200, 300\])
plt.legend()
plt.show()
```
这两种方法都可以实现共用x轴的效果,具体使用哪种方法取决于数据的特点和绘图的需求。
#### 引用[.reference_title]
- *1* [matplotlib 双y轴公用一个x轴](https://blog.csdn.net/June19/article/details/119454735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [matplotlib中两张图如何共用一个x轴,而y轴不一样。](https://blog.csdn.net/qq_43391414/article/details/125569774)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
matplotlib共用x轴上下
在Matplotlib中,可以通过创建两个子图并使用共享x轴的方式实现共用x轴上下的效果。首先,需要导入Matplotlib库和必要的模块。然后,可以使用`plt.subplots()`函数创建一个包含两个子图的图像对象。接下来,可以使用`ax1 = fig.add_subplot(111)`和`ax2 = ax1.twinx()`分别创建两个子图对象,并将第二个子图与第一个子图共享x轴。然后,可以使用`ax1.plot()`和`ax2.plot()`分别在两个子图上绘制数据。最后,可以使用`plt.show()`显示图像。
下面是一个示例代码,展示了如何在Matplotlib中实现共用x轴上下的效果:
```python
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.1)
y1 = 0.05 * x**2
y2 = -1 * y1
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(x, y1, 'g-')
ax2.plot(x, y2, 'b-')
ax1.set_xlabel("X data")
ax1.set_ylabel("Y1", color='g')
ax2.set_ylabel("Y2", color='b')
plt.show()
```
在这个示例中,图一使用下面的x轴和左边的y轴,图二使用上面的x轴和右边的y轴。为了将这两个图放在一起,图二的y轴数据取负号,这样图二的y轴就会是反的。从而两幅图,图一数据向上增长,图二数据向下增长。\[2\]
#### 引用[.reference_title]
- *1* [matplotlib 双y轴公用一个x轴](https://blog.csdn.net/June19/article/details/119454735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [matplotlib中两张图如何共用一个x轴,而y轴不一样。](https://blog.csdn.net/qq_43391414/article/details/125569774)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [matplotlib双y轴,共用同一x轴的画法图像的画法](https://blog.csdn.net/lzx159951/article/details/104398219)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]