gpt4 book ai didi

python - 如何更改 Pandas DataFrame 面积图上的年份间隔?

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:38 24 4
gpt4 key购买 nike

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import matplotlib.dates as dts


def use_matplot():

ax = df.plot(x='year', kind="area" )

years = dts.YearLocator(20)
ax.xaxis.set_major_locator(years)

fig = ax.get_figure()
fig.savefig('output.pdf')


dates = np.arange(1990,2061, 1)
dates = dates.astype('str').astype('datetime64')

df = pd.DataFrame(np.random.randint(0, dates.size, size=(dates.size,3)), columns=list('ABC'))
df['year'] = dates

cols = df.columns.tolist()
cols = [cols[-1]] + cols[:-1]
df = df[cols]

use_matplot()

在上面的代码中,当我尝试设置 YearLocator 以确保 X 轴每 20 年都有一个年份标签时,出现错误“ValueError:year 0 is out of range”。默认情况下,绘图每 10 年显示一次年份。我究竟做错了什么?期望的结果只是一个底部有 1990 年、2010 年、2030 年、2050 年的图。 (而不是默认的1990年、2000年、2010年等)

最佳答案

由于年份是简单的数字,因此您可以选择根本不将它们用作日期并保留它们作为数字。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

dates = np.arange(1990,2061, 1)

df = pd.DataFrame(np.random.randint(0,dates.size,size=(dates.size,3)),columns=list('ABC'))
df['year'] = dates

cols = df.columns.tolist()
cols = [cols[-1]] + cols[:-1]
df = df[cols]

ax = df.plot(x='year', kind="area" )
ax.set_xticks(range(2000,2061,20))

plt.show()

enter image description here

除此之外,在通过 pandas 创建的日期轴上使用 Matplotlib 定位器和格式化程序将 most often fail 。这是由于 pandas 使用完全不同的日期时间约定。为了更自由地为日期时间轴设置自定义标记,您可以使用 matplotlib。可以使用 plt.stackplot 来绘制 stackplot。在这样的 matplotlib 图上,使用通常的 matplotlib 代码是没有问题的。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as dts

dates = np.arange(1990,2061, 1)

df = pd.DataFrame(np.random.randint(0,dates.size,size=(dates.size,3)),columns=list('ABC'))
df['year'] = pd.to_datetime(dates.astype(str))

cols = df.columns.tolist()
cols = [cols[-1]] + cols[:-1]
df = df[cols]

plt.stackplot(df["year"].values, df[list('ABC')].values.T)

years = dts.YearLocator(20)
plt.gca().xaxis.set_major_locator(years)

plt.margins(x=0)
plt.show()

enter image description here

关于python - 如何更改 Pandas DataFrame 面积图上的年份间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46719625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com