首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当X轴包含负整数时奇异的matplotlib行为

当X轴包含负整数时奇异的matplotlib行为
EN

Stack Overflow用户
提问于 2022-02-25 00:55:11
回答 1查看 67关注 0票数 1

我试图绘制一个条形图,其中X轴是事件的天数(即t-10,t-9,.,t+10)。下面是一个X轴包含正整数的例子。图表正确生成。

代码语言:javascript
复制
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

fig, axes = plt.subplots(2, 1, figsize=(12, 8), sharex=True)
x = pd.DataFrame(np.random.normal(0., 1., size=(250, 2)), columns=['X', 'Y'])
x.plot.bar(y=['X'], width=1, ax=axes[0])
x.plot.bar(y=['Y'], width=1, ax=axes[1])
axes[1].set_xticks(x.index[::5])
axes[1].set_xticklabels(x.index[::5])
plt.tight_layout()
plt.show()
plt.clf()

但是,当X轴包含负值时,图表显示不正确。知道为什么会这样吗?请注意,我所更改的只是将index=[i for i in range(-100, 150)]添加到DataFrame中。

代码语言:javascript
复制
fig, axes = plt.subplots(2, 1, figsize=(12, 8), sharex=True)
x = pd.DataFrame(np.random.normal(0., 1., size=(250, 2)), columns=['X', 'Y'], index=[i for i in range(-100, 150)])
x.plot.bar(y=['X'], width=1, ax=axes[0])
x.plot.bar(y=['Y'], width=1, ax=axes[1])
axes[1].set_xticks(x.index[::5])
axes[1].set_xticklabels(x.index[::5])
plt.tight_layout()
plt.savefig(f'images/{label}_first_term_struct.png', dpi=300)
plt.clf()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-25 01:17:13

问题在于您的命令设置了刻度标记。画出熊猫的图似乎并不会自动使用x轴的索引。您可以按照@JohanC在对您的问题的评论中的建议,在matplotlib中直接绘制图表,也可以根据x的长度进行索引。这里有一个潜在的方法:

代码语言:javascript
复制
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

def do_plot(x, N):
    fig, axes = plt.subplots(2, 1, figsize=(12, 8), sharex=True)
    x.plot.bar(y=['X'], width=1, ax=axes[0])
    x.plot.bar(y=['Y'], width=1, ax=axes[1])
    axes[1].set_xticks(np.arange(N)[::5])
    axes[1].set_xticklabels(x.index[::5])
    plt.tight_layout()

N = 250
m = -100
x = pd.DataFrame(np.random.normal(0., 1., size=(N, 2)),
                 columns=['X', 'Y'],
                 index=[i for i in range(m, N+m)])
do_plot(x, N)

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

https://stackoverflow.com/questions/71259884

复制
相关文章

相似问题

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