我正在嘗試繪制一個條形圖,其中 X 軸是事件天數(即 t-10、t-9、...、t 10)。下面是 X 軸包含正整數的示例。圖表生成正確。
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。
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()

uj5u.com熱心網友回復:
問題在于您的命令設定了刻度線。似乎通過 pandas 繪圖不會自動使用 x 軸的索引。您可以matplotlib按照@JohanC 在對您的問題的評論中建議的那樣直接繪制,也可以根據x. 這是一種潛在的方法:
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)

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/433209.html
標籤:熊猫 matplotlib
