我正在用seaborn绘制一个数据框,其中2个(日期时间)点相隔一周。我想要的是x轴上的2个点,但是seaborn却给了7个点,这很混乱而且令人困惑。
import matplotlib.pyplot as plt import seaborn as sns import datetime import pandas as pd df = pd.DataFrame.from_dict({'Branch': {0: 'Branch 1', 1: 'Branch 1'}, 'Value £': {0: 24.0, 1: 7.5}, 'W/c': {0: datetime.date(2019, 5, 27), 1: datetime.date(2019, 6, 3)}}) df Branch W/c Value £ 0 Branch 1 2019-05-27 24.0 1 Branch 1 2019-06-03 7.5 sns.set() fig, ax = plt.subplots() pd.plotting.register_matplotlib_converters(explicit=True) ax = sns.lineplot(data = df, x='W/c', y='Value £', hue='Branch') fig.savefig('plot.png', bbox_inches='tight')
预期结果:x轴上有2个点
实际结果:x轴上的7点(在df中的日期之间(包括该日期)的每一天)。
如何仅在x轴上获得2个值?
谢谢
答案 0 :(得分:0)
您可以使用以下方法隐藏除第一个和最后一个刻度标签以外的所有标签。 range(1, len(xtcks)-1)
在这里将从第二个滴答声循环到最后一个第二个滴答声,并使其标签隐藏
完整答案
import matplotlib.pyplot as plt
import seaborn as sns
import datetime
import pandas as pd
df = pd.DataFrame.from_dict({'Branch': {0: 'Branch 1', 1: 'Branch 1'}, 'Value £': {0: 24.0, 1: 7.5},
'W/c': {0: datetime.date(2019, 5, 27), 1: datetime.date(2019, 6, 3)}})
sns.set()
fig, ax = plt.subplots()
pd.plotting.register_matplotlib_converters(explicit=True)
ax = sns.lineplot(data = df, x='W/c', y='Value £', hue='Branch')
fig.canvas.draw()
xticks = ax.xaxis.get_major_ticks()
for i in range(1, len(xticks)-1):
xticks[i].label1.set_visible(False)
fig.savefig('plot.png', bbox_inches='tight')