Python 3.x 让xticks在一个与大熊猫一起出海的地方展示几个月

Python 3.x 让xticks在一个与大熊猫一起出海的地方展示几个月,python-3.x,pandas,matplotlib,label,seaborn,Python 3.x,Pandas,Matplotlib,Label,Seaborn,我不知道如何使xticks显示月份 对于可复制的示例,我的数据为: import pandas as pd import matplotlib.pyplot as plt import seaborn as sns json = '{"index":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16},"Date"

我不知道如何使xticks显示月份

对于可复制的示例,我的数据为:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

json = '{"index":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16},"Date":{"0":1516147200000,"1":1516752000000,"2":1517788800000,"3":1520208000000,"4":1520985600000,"5":1522281600000,"6":1522886400000,"7":1523404800000,"8":1523491200000,"9":1524096000000,"10":1525305600000,"11":1525737600000,"12":1526428800000,"13":1527811200000,"14":1533686400000,"15":1534377600000,"16":1534809600000},"FB":{"0":0.978943931,"1":1.0282769543,"2":0.999118052,"3":0.994377665,"4":1.0152684601,"5":0.880773866,"6":0.8782934503,"7":0.91676777,"8":0.9032631287,"9":0.9265792518,"10":0.959210704,"11":0.9862198213,"12":1.0098114818,"13":1.0692867773,"14":1.0207253613,"15":0.962958874,"16":0.9514937543},"month":{"0":1,"1":1,"2":2,"3":3,"4":3,"5":3,"6":4,"7":4,"8":4,"9":4,"10":5,"11":5,"12":5,"13":6,"14":8,"15":8,"16":8}}'

toy_data = pd.read_json(json)


我想修改代码,以便在x轴上显示观察范围内的月份。也就是说,勾号标签0和1将被替换为“Jan”(出现一次),勾号标签2将被替换为“Feb”,勾号标签3、4、5将被替换为“March”(出现一次),等等。

您可以将日期转换为数字,并将这些数字用作
regplot
输入。然后,您可以将标签格式化为日期

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

json = '{"index":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16},"Date":{"0":1516147200000,"1":1516752000000,"2":1517788800000,"3":1520208000000,"4":1520985600000,"5":1522281600000,"6":1522886400000,"7":1523404800000,"8":1523491200000,"9":1524096000000,"10":1525305600000,"11":1525737600000,"12":1526428800000,"13":1527811200000,"14":1533686400000,"15":1534377600000,"16":1534809600000},"FB":{"0":0.978943931,"1":1.0282769543,"2":0.999118052,"3":0.994377665,"4":1.0152684601,"5":0.880773866,"6":0.8782934503,"7":0.91676777,"8":0.9032631287,"9":0.9265792518,"10":0.959210704,"11":0.9862198213,"12":1.0098114818,"13":1.0692867773,"14":1.0207253613,"15":0.962958874,"16":0.9514937543}}'
df = pd.read_json(json)
df["Date2"] = mdates.date2num(pd.to_datetime(df["Date"]))

fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(111)
ax.set_title('Share Price Facebook, Google and the SP500')
sns.regplot( x = 'Date2', y = 'FB', data = df , label = 'FB', fit_reg = True, ax=ax)

loc = mdates.AutoDateLocator()
ax.xaxis.set_major_locator(loc)
ax.xaxis.set_major_formatter(mdates.AutoDateFormatter(loc))
plt.show()

发布代码时,请确保人们可以粘贴并运行代码而不会遇到任何问题。如果
索引
介于1和12之间,我想我会理解这个问题。但是哪一个月是13号?谢谢你的评论@ImportanceOfBeingErnest:数据点表示天数。在现实生活中,可能有成百上千个,在x轴上显示确切的日期是不可能的。因此,我想给读者一个指示,从哪一个月/年开始,巴黎点群指的是哪一个月/年。清楚了吗?如果你愿意,我可以详细说明。@Bazingaa:对不起,我没有粘贴标题的文本。现在它应该运行了。好吧,问题代码中的数据不会生成所示的图。虽然这对问题的目的可能无关紧要,但肯定会令人困惑。我编辑了你的文章,包含了一个可运行的代码。谢谢。有没有一种方法可以保留我发布的图表,并简单地替换xtick标签?我知道x值和记号标签之间不会有一对一的关系,但这对我来说是可以的,这是可能的。但是你需要决定(并告诉人们)你想用什么来替换标签。@ImportanceOfBeingErnest谢谢你让我知道。我为我造成的任何混乱道歉。我编辑了我的问题,以便更清楚地说明我的意图。
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import seaborn as sns

json = '{"index":{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16},"Date":{"0":1516147200000,"1":1516752000000,"2":1517788800000,"3":1520208000000,"4":1520985600000,"5":1522281600000,"6":1522886400000,"7":1523404800000,"8":1523491200000,"9":1524096000000,"10":1525305600000,"11":1525737600000,"12":1526428800000,"13":1527811200000,"14":1533686400000,"15":1534377600000,"16":1534809600000},"FB":{"0":0.978943931,"1":1.0282769543,"2":0.999118052,"3":0.994377665,"4":1.0152684601,"5":0.880773866,"6":0.8782934503,"7":0.91676777,"8":0.9032631287,"9":0.9265792518,"10":0.959210704,"11":0.9862198213,"12":1.0098114818,"13":1.0692867773,"14":1.0207253613,"15":0.962958874,"16":0.9514937543}}'
df = pd.read_json(json)
df["Date2"] = mdates.date2num(pd.to_datetime(df["Date"]))

fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(111)
ax.set_title('Share Price Facebook, Google and the SP500')
sns.regplot( x = 'Date2', y = 'FB', data = df , label = 'FB', fit_reg = True, ax=ax)

loc = mdates.AutoDateLocator()
ax.xaxis.set_major_locator(loc)
ax.xaxis.set_major_formatter(mdates.AutoDateFormatter(loc))
plt.show()