首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >matplotlib条形图看起来是截止的

matplotlib条形图看起来是截止的
EN

Stack Overflow用户
提问于 2021-12-26 16:00:52
回答 2查看 168关注 0票数 -1

我有一个代表8个发行版的值列表。

当我运行这段代码时:

代码语言:javascript
运行
复制
            for pidx in range(len(names)):
              name = names[pidx]
              ber = stm_df.loc[x, name].tolist()
              mx_ber = max([mx_ber] + ber)
              mn_ber = min([mn_ber] + ber)
              ber[0] = 0
              sr = pd.Series(ber,x)
              sr = sr[sr > 0]
              rect = axes[1].plot(sr.index, sr.values)

它看起来应该是:

但是,当我从".plot“改为".bar”时,它们看起来都是截止代码:

代码语言:javascript
运行
复制
            for pidx in range(len(names)):
              name = names[pidx]
              ber = stm_df.loc[x, name].tolist()
              mx_ber = max([mx_ber] + ber)
              mn_ber = min([mn_ber] + ber)
              ber[0] = 0
              sr = pd.Series(ber,x)
              sr = sr[sr > 0]
              rect = axes[1].bar(sr.index, sr.values)

结果:

其他的一切都一样。怎么一回事?

EN

回答 2

Stack Overflow用户

发布于 2021-12-26 16:45:32

如果您的目标是将分布曲线下的区域着色,我建议使用plt.fill_between,如下所示。

代码语言:javascript
运行
复制
# Color area under curve 
from matplotlib import pyplot as plt
import numpy as np

# Get x values of the curve (a sine wave in this case)
time = np.arange(0, 10, 0.1);

# Amplitude of the sine wave across time
amplitude = np.sin(time)

# Plot a curve with time and amplitude
plt.plot(time, amplitude, color='black')

# title
plt.title('Sine wave')

# x axis label
plt.xlabel('Time')

# y axis label
plt.ylabel('Amplitude')

# add midline
plt.axhline(y=0, color='k')¨

# fill area between midline across time and amplitude 
plt.fill_between(time, amplitude, color='cyan')

plt.show()

在您的示例中,这意味着只需添加plt.fill_between(sr.index,sr.values,color=f'C{pidx})。

代码语言:javascript
运行
复制
        for pidx in range(len(names)):
          name = names[pidx]
          ber = stm_df.loc[x, name].tolist()
          mx_ber = max([mx_ber] + ber)
          mn_ber = min([mn_ber] + ber)
          ber[0] = 0
          sr = pd.Series(ber,x)
          sr = sr[sr > 0]
          rect = axes[1].plot(sr.index, sr.values)
          plt.fill_between(sr.index, sr.values, color=f'C{pidx})
票数 1
EN

Stack Overflow用户

发布于 2021-12-26 16:24:14

很难用手头的信息来说明,但我相信您的bar()的高度参数可能没有正确配置。高度应配置为每个分布的最大点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70487869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档