matplotlib练习
1.# 绘制两条线,分别设置不同的样式 # 第一条线:红色虚线,圆形标记,线宽 1.5,标记大小 6 # 第二条线:绿色实线,方形标记,线宽 2,标记大小 8
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, "r--o", linewidth=1.5, markersize=6, label="sin")
plt.plot(x, y2, "g-s", linewidth=2, markersize=8, label="cos")
plt.legend()
plt.show()
运行结果:
2. # 点的颜色根据 y 坐标值使用 'plasma' 颜色映射 # 透明度为 0.6,边缘颜色为黑色
import matplotlib.pyplot as plt
import numpy as np
x = np.random.rand(100)
y = np.random.rand(100)
sizes = 500 * x
colors = y
plt.scatter(x, y, s=sizes, c=colors, cmap='plasma', alpha=0.6, edgecolors='black')
plt.title('Scatter plot with variable size and color')
plt.xlabel('x')
plt.ylabel('y')
plt.colorbar(label='y values')
plt.show()
运行结果:
3.# 绘制两组并列的条形图,第一组颜色为橙色,第二组颜色为紫色 # 条形宽度为 0.35,添加图例
import matplotlib.pyplot as plt
import numpy as np
categories = ['Apple', 'Banana', 'Cherry', 'Date', 'Eggplant']
values1 = [30, 25, 40, 15, 20]
values2 = [20, 30, 35, 25, 10]
bar_width = 0.35
index = np.arange(len(categories))
plt.bar(index, values1, bar_width, label='Set 1', color='orange') # 第一组:橙色
plt.bar(index + bar_width, values2, bar_width, label='Set 2', color='purple') # 第二组:紫色
plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Comparison of Two Sets')
plt.xticks(index + bar_width / 2, categories)
plt.legend()
plt.show()
运行结果:
4.# 绘制饼图,要求: # 突出显示 Category2 # 显示百分比,保留两位小数 # 开始角度为 120 度 # 添加阴影 # 扇形边缘颜色为黑色,线宽为 1
import matplotlib.pyplot as plt
sizes = [20, 30, 25, 15, 10]
labels = ['Category1', 'Category2', 'Category3', 'Category4', 'Category5']
explode = (0, 0.1, 0, 0, 0)
wedgeprops = {'edgecolor': 'black', 'linewidth': 1, 'linestyle': 'solid'}
plt.pie(sizes, labels=labels, explode=explode, autopct='%1.2f%%',
startangle=120, shadow=True, wedgeprops=wedgeprops)
plt.show()
运行结果:
5.# 绘制直方图,箱数为 40,颜色为橙色,透明度为 0.6 # 设置合适的 x 轴和 y 轴标签以及标题
import matplotlib.pyplot as plt
import numpy as np
data = np.random.randn(2000)
plt.hist(data, bins=40, color='orange', alpha=0.6)
plt.title('Histogram of Normally Distributed Data')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.show()
运行结果:
6.# 绘制水平箱线图,填充箱体颜色为绿色 # 设置合适的 x 轴和 y 轴标签以及标题
import matplotlib.pyplot as plt
import numpy as np
data1 = np.random.normal(0, 1, 150)
data2 = np.random.normal(1, 1, 150)
data3 = np.random.normal(2, 1, 150)
data = [data1, data2, data3]
plt.boxplot(data, vert=False, patch_artist=True, boxprops=dict(facecolor='green', color='black'))
plt.title('Horizontal Boxplot of Three Normal Distributions')
plt.xlabel('Value')
plt.ylabel('Category')
plt.show()
运行结果:
7.# 创建一个 1 行 3 列的子图布局 # 在第一个子图中绘制正弦函数,标题为 'Sine' # 在第二个子图中绘制余弦函数,标题为 'Cosine' # 在第三个子图中绘制正切函数,标题为 'Tangent'
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 3 * np.pi, 1000)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
# 限制正切函数的值,避免极端值影响图形显示
y3 = np.clip(y3, -10, 10) # 将正切函数的值限制在 -10 到 10 之间
fig, axit = plt.subplots(1, 3, figsize=(15, 5))
axit[0].plot(x, y1)
axit[0].set_title('Sine')
axit[1].plot(x, y2)
axit[1].set_title('Cosine')
axit[2].plot(x, y3)
axit[2].set_title('Tangent')
fig.suptitle('Trigonometric Functions')
plt.show()
运行结果: