plt.plot 纵坐标用百分数表示
时间: 2023-08-27 09:05:40 浏览: 196
在使用plt.plot绘制图形时,如果想要纵坐标以百分数的形式表示,可以使用matplotlib.ticker模块中的FormatStrFormatter或FuncFormatter函数来实现。引用[1]中的示例代码展示了使用FormatStrFormatter函数的方法,可以通过设置axes.yaxis.set_major_formatter(FormatStrFormatter('%.2f%%'))来将纵坐标格式化为百分数,并指定小数位数。引用[2]中的示例代码展示了使用FuncFormatter函数的方法,可以通过设置axes.yaxis.set_major_formatter(FuncFormatter(lambda x,_:'{}%'.format(x*100)))来将纵坐标格式化为百分数。这两种方法都可以实现纵坐标以百分数的形式显示。
相关问题
得分图我要折线图,请给我纵坐标最多为100%,横坐标为主成分,图中分别用橙色和蓝色的线表示各主成分的累计贡献率和贡献率。
好的,根据你的要求,我们可以使用折线图来表示主成分的累计贡献率和贡献率。以下是相应的代码:
```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,以适应累计贡献率和贡献率的百分比表示。
将横坐标改为对应的日期
好的,将横坐标改为对应的日期可以按照以下步骤进行:
1. 首先,将日期列设置为 DataFrame 的索引,可以使用 pandas 的 `set_index()` 函数,例如:
```python
df = pd.read_excel('stocks.xlsx', usecols=[0, 1, 2, 3, 4, 5], index_col=0)
```
这个函数将第一列设置为索引列,也就是日期列。
2. 对每支股票的收盘价进行计算,得到每日的涨跌幅,可以使用 pandas 的 `pct_change()` 函数,例如:
```python
change = df.pct_change()
```
这个函数将计算每一列中相邻两个元素的百分比变化,也就是涨跌幅。注意,由于第一行没有前一个元素,所以第一行会被设置为 NaN。
3. 使用 matplotlib 库绘制图表,可以使用 `plot()` 函数,例如:
```python
change.plot()
plt.xlabel('Date')
plt.ylabel('Change')
plt.title('Stock Prices Change')
plt.legend(loc='upper left')
plt.show()
```
这个代码将绘制出一个包含每支股票每日涨跌幅的折线图,其中每条折线代表一支股票的涨跌幅。图表上添加了横坐标标签 "Date",纵坐标标签 "Change",标题 "Stock Prices Change",以及图例 "upper left"。
注意,由于横坐标是日期,可能会比较密集,可以使用 matplotlib 的 `autoscale()` 函数自动缩放横坐标的范围,例如:
```python
plt.autoscale(enable=True, axis='x', tight=True)
```
这个函数将自动缩放横坐标的范围,以适应日期的密集程度。
这样,你就可以得到一个包含每支股票每日涨跌幅的表格,并将其绘制成图表展示出来,横坐标为对应的日期。
阅读全文