定义两个列表x=[1,2,3,4]和y=[5,4,3,2],分别画出以列表x为横轴坐标,列表y为纵轴坐标的折线图(线条宽度为2,以点划线绘制)、柱状图、水平柱状图、堆积柱状图、箱线图、散点图(点以星号*标记)。各子图在画布上分成三行两列绘制
时间: 2023-09-09 14:05:34 浏览: 123
### 回答1:
好的,我会根据你的要求回答问题。以下是我的回答:
折线图:
```
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [5, 4, 3, 2]
plt.subplot(3, 2, 1)
plt.plot(x, y, linestyle='--', marker='*', linewidth=2)
plt.title('折线图')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
```
柱状图:
```
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [5, 4, 3, 2]
plt.subplot(3, 2, 2)
plt.bar(x, y, width=0.5)
plt.title('柱状图')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
```
水平柱状图:
```
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [5, 4, 3, 2]
plt.subplot(3, 2, 3)
plt.barh(x, y, height=0.5)
plt.title('水平柱状图')
plt.xlabel('y')
plt.ylabel('x')
plt.show()
```
堆积柱状图:
```
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y1 = [1, 2, 3, 4]
y2 = [4, 3, 2, 1]
plt.subplot(3, 2, 4)
plt.bar(x, y1, width=0.5, label='y1')
plt.bar(x, y2, width=0.5, label='y2', bottom=y1)
plt.title('堆积柱状图')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()
```
箱线图:
```
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [5, 4, 3, 2]
plt.subplot(3, 2, 5)
plt.boxplot([x, y], labels=['x', 'y'])
plt.title('箱线图')
plt.xlabel('x和y')
plt.ylabel('值')
plt.show()
```
散点图:
```
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [5, 4, 3, 2]
plt.subplot(3, 2, 6)
plt.scatter(x, y, marker='*', s=100)
plt.title('散点图')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
```
### 回答2:
import matplotlib.pyplot as plt
# 定义数据
x = [1, 2, 3, 4]
y = [5, 4, 3, 2]
# 创建画布和子图
fig, axs = plt.subplots(3, 2, figsize=(10, 12))
# 折线图
axs[0, 0].plot(x, y, linestyle='dotted', linewidth=2)
axs[0, 0].set_title("折线图")
# 柱状图
axs[0, 1].bar(x, y)
axs[0, 1].set_title("柱状图")
# 水平柱状图
axs[1, 0].barh(x, y)
axs[1, 0].set_title("水平柱状图")
# 堆积柱状图
axs[1, 1].bar(x, y, label='x')
axs[1, 1].bar(x, [5, 3, 1, 2], bottom=y, label='y')
axs[1, 1].set_title("堆积柱状图")
axs[1, 1].legend()
# 箱线图
axs[2, 0].boxplot([x, y])
axs[2, 0].set_title("箱线图")
# 散点图
axs[2, 1].scatter(x, y, marker='*')
axs[2, 1].set_title("散点图")
# 调整子图之间的间距
plt.tight_layout()
# 展示图像
plt.show()
### 回答3:
首先,需要导入绘图库matplotlib,并设置绘图风格为classic:
```python
import matplotlib.pyplot as plt
plt.style.use("classic")
```
接下来,定义两个列表x和y:
```python
x = [1, 2, 3, 4]
y = [5, 4, 3, 2]
```
然后,创建一个6个子图的画布,并将画布分成三行两列:
```python
fig, axes = plt.subplots(3, 2, figsize=(10, 10))
```
在第一行,第一列绘制折线图:
```python
axes[0, 0].plot(x, y, linestyle='dotted', linewidth=2)
axes[0, 0].set_title("折线图")
```
在第一行,第二列绘制柱状图:
```python
axes[0, 1].bar(x, y)
axes[0, 1].set_title("柱状图")
```
在第二行,第一列绘制水平柱状图:
```python
axes[1, 0].barh(x, y)
axes[1, 0].set_title("水平柱状图")
```
在第二行,第二列绘制堆积柱状图:
```python
axes[1, 1].bar(x, y, label='y')
axes[1, 1].bar(x, x, bottom=y, label='x')
axes[1, 1].set_title("堆积柱状图")
axes[1, 1].legend()
```
在第三行,第一列绘制箱线图:
```python
axes[2, 0].boxplot([x, y], labels=['x', 'y'])
axes[2, 0].set_title("箱线图")
```
在第三行,第二列绘制散点图:
```python
axes[2, 1].scatter(x, y, marker='*', color='r', s=100)
axes[2, 1].set_title("散点图")
```
最后,显示图形:
```python
plt.tight_layout()
plt.show()
```
这样就完成了以列表x为横轴坐标,列表y为纵轴坐标的折线图、柱状图、水平柱状图、堆积柱状图、箱线图和散点图的绘制。
阅读全文