得分图我要折线图,请给我纵坐标最多为100%,横坐标为主成分,图中分别用橙色和蓝色的线表示各主成分的累计贡献率和贡献率。
时间: 2024-04-12 15:31:53 浏览: 67
好的,根据你的要求,我们可以使用折线图来表示主成分的累计贡献率和贡献率。以下是相应的代码:
```python
import matplotlib.pyplot as plt
# 计算累计贡献率
cumulative_var = np.cumsum(featValue) / np.sum(featValue)
# 创建一个包含两个子图的画布
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(8, 6))
# 设置第一个子图为累计贡献率折线图样式
ax1.plot(range(1, df.shape[1] + 1), cumulative_var, color='b') # 使用蓝色的线表示累计贡献率
ax1.set_ylim([0, 1]) # 设置纵坐标范围为0到1
# 设置第二个子图为贡献率折线图样式
ax2.plot(range(1, df.shape[1] + 1), featValue, color='orange') # 使用橙色的线表示贡献率
ax2.set_ylim([0, 1]) # 设置纵坐标范围为0到1
# 设置标题和轴标签
ax1.set_title("Cumulative Contribution Rate")
ax2.set_title("Contribution Rate")
ax1.set_xlabel("Principal Components")
ax2.set_xlabel("Principal Components")
ax1.set_ylabel("Cumulative Contribution Rate")
ax2.set_ylabel("Contribution Rate")
# 添加网格线
ax1.grid()
ax2.grid()
# 调整子图之间的间距
plt.tight_layout()
# 展示图形
plt.show()
```
这样就可以得到一个包含累计贡献率和贡献率的折线图子图布局。累计贡献率使用蓝色的线表示,贡献率使用橙色的线表示。纵坐标的范围被设置为0到1,以适应累计贡献率和贡献率的百分比表示。
阅读全文