Python 使用seaborn打印,不在x轴上全部显示

Python 使用seaborn打印,不在x轴上全部显示,python,matplotlib,plot,seaborn,Python,Matplotlib,Plot,Seaborn,我用seaborn做了一个绘图,但我需要x轴每3天显示一次日期(因为我原来的df有1000多个寄存器),但这只是出于尊重的原因,因为在绘图中线条显示所有寄存器很重要(只修改x记号) 这是一个df import matplotlib.pyplot as plt data = {'Sales': [10,30,20,55,78,90,22,42,53,14,11,31,32,21,20,42], 'Date': ['2020-03-03', '2020-03-04','2020-0

我用seaborn做了一个绘图,但我需要x轴每3天显示一次日期(因为我原来的df有1000多个寄存器),但这只是出于尊重的原因,因为在绘图中线条显示所有寄存器很重要(只修改x记号)

这是一个df

import matplotlib.pyplot as plt
data = {'Sales':  [10,30,20,55,78,90,22,42,53,14,11,31,32,21,20,42],
        'Date': ['2020-03-03', '2020-03-04','2020-03-05','2020-03-06','2020-03-07', '2020-03-08','2020-03-09','2020-03-10','2020-03-11', '2020-03-12','2020-03-13','2020-03-14','2020-03-15', '2020-03-16','2020-03-17','2020-03-18']}
df = pd.DataFrame (data, columns = ['Date','Sales'])
plt.figure(figsize=(16,10))

chart = sns.lineplot(data=df,x='Date',y='Sales',palette='Set1')

plt = plt.xticks(rotation=45,horizontalalignment='right',fontweight='light')

我需要这样的东西:


非常感谢

您只能使用偶数日期行,这应该足够了:

导入matplotlib.pyplot作为plt
导入seaborn作为sns
数据={'Sales':[10,30,20,55,78,90,22,42,53,14,11,31,32,21,20,42],
‘日期’:[‘2020-03-03’、‘2020-03-04’、‘2020-03-05’、‘2020-03-06’、‘2020-03-07’、‘2020-03-08’、‘2020-03-09’、‘2020-03-10’、‘2020-03-11’、‘2020-03-12’、‘2020-03-13’、‘2020-03-14’、‘2020-03-15’、‘2020-03-16’、‘2020-03-17’、‘2020-03-18’]
df=pd.DataFrame(数据,列=['Date','Sales'])
plt.图(figsize=(16,10))
chart=sns.lineplot(数据=df,x='Date',y='Sales',palete='Set1')
plt.xticks(
df['Date'].iloc[::2],#仅奇数行
旋转=45,
水平对齐='右',
fontweight='light'
)
plt.plot()

您只能选择偶数日期行,这就足够了:

导入matplotlib.pyplot作为plt
导入seaborn作为sns
数据={'Sales':[10,30,20,55,78,90,22,42,53,14,11,31,32,21,20,42],
‘日期’:[‘2020-03-03’、‘2020-03-04’、‘2020-03-05’、‘2020-03-06’、‘2020-03-07’、‘2020-03-08’、‘2020-03-09’、‘2020-03-10’、‘2020-03-11’、‘2020-03-12’、‘2020-03-13’、‘2020-03-14’、‘2020-03-15’、‘2020-03-16’、‘2020-03-17’、‘2020-03-18’]
df=pd.DataFrame(数据,列=['Date','Sales'])
plt.图(figsize=(16,10))
chart=sns.lineplot(数据=df,x='Date',y='Sales',palete='Set1')
plt.xticks(
df['Date'].iloc[::2],#仅奇数行
旋转=45,
水平对齐='右',
fontweight='light'
)
plt.plot()

您可以使用matplotlib的日期定位器和格式化程序来完成几乎所有您想要的时间线样式/定位——请参阅

在您的情况下,我们可以使用日定位器并将间隔设置为3天。您还必须导入matplotlib.dates

import matplotlib.dates as mdates.
现在将此添加到
plt.show()
之前:

总的来说是这样的

import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.dates as mdates

ata = {'Sales':  [10,30,20,55,78,90,22,42,53,14,11,31,32,21,20,42],
        'Date': ['2020-03-03', '2020-03-04','2020-03-05','2020-03-06','2020-03-07', '2020-03-08','2020-03-09','2020-03-10','2020-03-11', '2020-03-12','2020-03-13','2020-03-14','2020-03-15', '2020-03-16','2020-03-17','2020-03-18']}
df = pd.DataFrame (data, columns = ['Date','Sales'])
plt.figure(figsize=(16,10))

chart = sns.lineplot(data=df,x='Date',y='Sales',palette='Set1')

plt.xticks(rotation=45,horizontalalignment='right',fontweight='light')

locator = mdates.DayLocator(interval=3)
chart.xaxis.set_major_locator(locator)

plt.show()

您可以使用matplotlib的日期定位器和格式化程序来完成几乎所有可能的时间线样式/定位,请参见

在您的情况下,我们可以使用日定位器并将间隔设置为3天。您还必须导入matplotlib.dates

import matplotlib.dates as mdates.
现在将此添加到
plt.show()
之前:

总的来说是这样的

import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.dates as mdates

ata = {'Sales':  [10,30,20,55,78,90,22,42,53,14,11,31,32,21,20,42],
        'Date': ['2020-03-03', '2020-03-04','2020-03-05','2020-03-06','2020-03-07', '2020-03-08','2020-03-09','2020-03-10','2020-03-11', '2020-03-12','2020-03-13','2020-03-14','2020-03-15', '2020-03-16','2020-03-17','2020-03-18']}
df = pd.DataFrame (data, columns = ['Date','Sales'])
plt.figure(figsize=(16,10))

chart = sns.lineplot(data=df,x='Date',y='Sales',palette='Set1')

plt.xticks(rotation=45,horizontalalignment='right',fontweight='light')

locator = mdates.DayLocator(interval=3)
chart.xaxis.set_major_locator(locator)

plt.show()