用matplotlib.pyplot绘制2*2子图,上传py文件。
时间: 2024-12-16 19:22:38 浏览: 11
在Python中,你可以使用matplotlib库中的`subplots`函数创建一个2x2子图。下面是一个简单的例子,展示了如何在一个画布上创建并填充四个独立的小图像:
```python
import matplotlib.pyplot as plt
# 创建一个2x2网格
fig, axs = plt.subplots(2, 2)
# 对每个子图分别设置内容
axs[0, 0].plot([1, 2, 3])
axs[0, 0].set_title('Subplot (0, 0)')
axs[0, 1].scatter([4, 5, 6], [7, 8, 9])
axs[0, 1].set_title('Subplot (0, 1)')
axs[1, 0].bar(['A', 'B', 'C'], [10, 20, 30])
axs[1, 0].set_title('Subplot (1, 0)')
axs[1, 1].imshow([[100, 200], [300, 400]])
axs[1, 1].set_title('Subplot (1, 1)')
# 显示图形
plt.tight_layout() # 使子图之间的间距更美观
plt.show()
# 你可以将这个代码保存到一个.py文件中,例如 "subplot_2x2.py"
```
如果你想要上传整个文件,确保你的代码包含了上述所有内容,并且文件名后缀是`.py`。然后,你可以在命令行或者通过在线代码编辑环境运行它。
相关问题
import matplotlib as mpl import matplotlib.pyplot as plt plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=0.5) t=np.arange(0.0,2.0,0.1) s=np.sin(t*np.pi) plt.subplot(2,2,1) #要生成两行两列,这是第一个图 import numpy as np import matplotlib.pyplot as plt x = np.arange(1,13) y1 = np.array([53673, 57571, 58905, 55239, 49661, 49510, 49163, 57311, 59187, 60074, 57109, 52885]) plt.plot(x, y1) plt.title('近13天登录人数') plt.show() plt.subplot(2,2,2) #两行两列,这是第二个图 import numpy as np import matplotlib.pyplot as plt plt.subplots_adjust(top=0.85) x = np.arange(12) y = np.array([70887, 64957, 62508, 66471, 54972, 46245, 64083, 67090, 64991, 88504, 79404, 68253,]) bar_width = 0.3 plt.bar(x, y, tick_label=['1月', '2月', '3月', '4月', '5月', '6月', '7月', "8月", "9月", "10月", '11月', '12月'],width=bar_width) plt.title('近12个月人数') plt.show() plt.subplot(2,2,3)#两行两列,这是第三个图 import matplotlib.pyplot as plt plt.subplots_adjust(top=0.85) plt.style.use('fivethirtyeight') languages = ['steam', 'ubisoft'] popularity = [78,22] plt.pie(popularity) plt.tight_layout() plt.pie(popularity, labels=languages, autopct='%1.1f%%') plt.title('游戏平台登录占比') plt.subplot(2,2,4)#两行两列,这是第四个图 import numpy as np from matplotlib import pyplot as plt ages_x = [1, 2, 3, 4, 5, ] x_indexes = np.arange(len(ages_x)) width = 0.33 dev_y = [64050, 65168, 75588, 75590, 60097] py_dev_y = [57809, 56101, 70605, 63437, 56756] plt.bar(x_indexes, dev_y, width=width, label="2022") plt.bar(x_indexes + width, py_dev_y, width=width, label="2023") plt.xlabel("月份") plt.ylabel("平均在线人数") plt.title("2022和2023一到五月在线人数对比") plt.legend() plt.xticks(ticks = x_indexes, labels = ages_x) plt.show()
这段代码实现了生成四个子图的功能,分别展示了近13天登录人数、近12个月人数、游戏平台登录占比和2022和2023一到五月在线人数对比。其中第一个子图使用了plot函数绘制折线图,第二个子图使用了bar函数绘制柱状图,第三个子图使用了pie函数绘制饼图,第四个子图使用了bar函数绘制堆叠柱状图。同时,代码中也使用了plt.subplots_adjust函数调整子图之间的间距和上下左右的位置。
利用NumPy、MatPlotLib库绘图,要求画布像素1200*900,子图布局为3行2列,各子图添加标题(内容为子图类型及姓名,如“张三折线图”),添加x、y轴名称,及图例,题中n为学号后两位。文件名为:完整学号_姓名_3_4.py。 (1)子图1为折线图,绘制y=sin(x), y=cos(x)两个函数的图像,x取值范围[-n*PI, n*PI],前者线条为红色短虚线,后者为绿色点线。
好的,以下是代码实现:
```python
import numpy as np
import matplotlib.pyplot as plt
# 设置画布像素1200*900
plt.figure(figsize=(12, 9))
# 子图布局为3行2列,各子图添加标题、x、y轴名称,及图例
plt.subplot(321)
plt.title("折线图_张三")
plt.xlabel("x")
plt.ylabel("y")
plt.xlim(-np.pi*2, np.pi*2)
plt.ylim(-1.2, 1.2)
x = np.linspace(-np.pi*2, np.pi*2, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, color='r', linestyle='--', label='y=sin(x)')
plt.plot(x, y2, color='g', linestyle=':', label='y=cos(x)')
plt.legend(loc='upper left')
# 保存图片
plt.savefig('完整学号_姓名_3_4.py')
```
注意,这里我使用了 `np.linspace` 函数来生成 `x` 值,使得 `y=sin(x)` 和 `y=cos(x)` 在同一张图上展示,并且它们的 `x` 取值范围相同。同时,为了使得图像更加美观,我设置了 `x` 和 `y` 轴的刻度范围,并且给每个子图添加了标题、轴名称和图例。
阅读全文