【发布时间】:2020-10-28 11:13:45
【问题描述】:
我有许多图表,用 matplotlib 和 seaborn 制作,如下例所示。
- 我在折线图上展示了某些数量如何随时间演变
- x 轴标签不是数字,而是字符串(例如“Q1”或“2018 上半年”等)
- 我需要将 x 轴“延伸”到右侧,其中包含一个空白句点。 图表必须显示从 Q1 到 Q4,但没有 Q4 的数据(Q4 列充满了 nans )
- 我需要这个,因为我需要将图表与其他有第四季度数据的图表并排显示
- matplotlib 不显示充满 nan 的列
- 如果 x 轴是数字,则很容易扩展绘图范围;因为它不是数字,所以我不知道每个刻度对应哪个 x_range
- 我在下面找到了解决方案。它可以工作,但并不优雅:我使用整数作为 x 轴,加 1,然后将标签设置回字符串。 有没有更优雅的方式?
这是代码:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
from matplotlib.ticker import FuncFormatter
import seaborn as sns
df =pd.DataFrame()
df['period'] = ['Q1','Q2','Q3','Q4']
df['a'] = [3,4,5,np.nan]
df['b'] = [4,4,6,np.nan]
df = df.set_index( 'period')
fig, ax = plt.subplots(1,2)
sns.lineplot( data = df, ax =ax[0])
df_idx = df.index
df2 = df.set_index( np.arange(1, len(df_idx) + 1 ))
sns.lineplot(data = df2, ax = ax[1])
ax[1].set_xlim(1,4)
ax[1].set_xticklabels(df.index)
【问题讨论】:
标签: python matplotlib