簡體   English   中英

如何在matplotlib中排列x軸的年數

[英]How to arrange years of x-axis in matplotlib

我在 python 中有一個如下的箱線圖 - matplotlib,有人可以幫助我減少 x 軸上的年間距(下圖)

fig, ax = plt.subplots(figsize = (16,8))

data = pd.concat([df_train.SalePrice, df_train.YearBuilt],axis=1)

sns.boxplot('YearBuilt','SalePrice',data=data)

plt.xticks(rotation=90)

plt.show()

箱線圖

生成一些示例數據:

import numpy as np
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt

# Generate Some Sample Data
np.random.seed(15)
dr = np.repeat(pd.date_range('1872-01-01', '2011-01-01', freq='Y').year, 10)
data = pd.DataFrame({
    'YearBuilt': dr,
    'SalePrice': np.random.randint(0, 70_000, len(dr))
})

要以 5 年為間隔設置年份,請獲取unique “YearBuilt”列並使用np.where設置year % 5為 0 的刻度:

fig, ax = plt.subplots(figsize=(16, 8))
sns.boxplot(x='YearBuilt', y='SalePrice', data=data, ax=ax)
years = np.sort(data['YearBuilt'].unique())
ax.set_xticklabels(np.where(years % 5 == 0, years, ''))
plt.xticks(rotation=90)
plt.show()

陰謀


或者將tick locator設置為MultipleLocator

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import numpy as np
import pandas as pd
import seaborn as sns

# Generate Some Sample Data
np.random.seed(15)
dr = np.repeat(pd.date_range('1872-01-01', '2011-01-01', freq='Y').year, 10)
data = pd.DataFrame({
    'YearBuilt': dr,
    'SalePrice': np.random.randint(0, 70_000, len(dr))
})
fig, ax = plt.subplots(figsize=(16, 8))
sns.boxplot(x='YearBuilt', y='SalePrice', data=data, ax=ax)

ax.xaxis.set_major_locator(ticker.MultipleLocator(5))
ax.xaxis.set_minor_locator(ticker.MultipleLocator(1))
plt.xticks(rotation=90)
plt.show()

情節 2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM