Python 如果没有';t对应的值

Python 如果没有';t对应的值,python,pandas,matplotlib,seaborn,Python,Pandas,Matplotlib,Seaborn,使用matplotlib以x轴作为日期,以y轴作为日期打印数据时,出现以下问题:图表在日期上用空格绘制,没有值,如下图所示。我希望24号和25号不在x轴上 import pandas as pd import matplotlib.pyplot as plt s = pd.Series([1,2,3,4,5,6,7,8,9,10]) s.index = pd.Index([20210419, 20210420, 20210421, 20210422, 20210423, 20210426, 2

使用matplotlib以x轴作为日期,以y轴作为日期打印数据时,出现以下问题:图表在日期上用空格绘制,没有值,如下图所示。我希望24号和25号不在x轴上

import pandas as pd
import matplotlib.pyplot as plt

s = pd.Series([1,2,3,4,5,6,7,8,9,10])
s.index = pd.Index([20210419, 20210420, 20210421, 20210422, 20210423, 20210426, 20210427, 20210428, 20210429, 20210430])
plt.bar(s.index, s)
plt.show()

  • 最好的选择可能是使用
    pandas.Series.plot
    ,因为不需要额外的导入,也不需要额外的格式
  • 使用
    seaborn
    是次佳选择,但需要导入包
  • 直接使用
    matplotlib
    并将轴转换为字符串是我最不喜欢的选项
使用
pandas.Series.Plot打印
  • 这也不需要将轴转换为字符串
  • 熊猫1.2.4版的示例
s=pd.系列([1,2,3,4,5,6,7,8,9,10])
s、 指数=pd指数([20210419、20210420、20210421、20210422、20210423、20210426、20210427、20210428、20210429、20210430])
s、 index=pd.to_datetime(s.index,格式='%Y%m%d')。日期
s、 绘图(kind='bar')
plt.xticks(旋转=90)
plt.show()


使用
seaborn
  • 使用
    seaborn
    ,它是
    matplotlib
  • 在这种情况下,
    .date
    仅用于提取日期时间的日期部分,否则时间将包含在x轴刻度标签中
  • 对于
    seaborn.barplot
    ,不需要将轴值转换为字符串,但对于其他类型的seaborn绘图,则需要将轴值转换为字符串
  • 带有
    seaborn v0.11.1的示例
s=pd.系列([1,2,3,4,5,6,7,8,9,10])
s、 指数=pd指数([20210419、20210420、20210421、20210422、20210423、20210426、20210427、20210428、20210429、20210430])
s、 index=pd.to_datetime(s.index,格式='%Y%m%d')。日期
sns.条形图(x=s.索引,y=s)
plt.xticks(旋转=90)
plt.show()


使用
matplotlib
  • 问题是在打印数字或日期时,matplotlib API包含顺序轴标签,即使没有相应的轴值
  • 一种解决方案是将x轴的
    系列转换为
    str
  • 此解决方案适用于针对任一轴进行打印以及非
    的打印类型
  • 带有
    matplotlib v3.3.4的示例
将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
s=pd.系列([1,2,3,4,5,6,7,8,9,10])
s、 指数=pd指数([20210419、20210420、20210421、20210422、20210423、20210426、20210427、20210428、20210429、20210430])
#将格式转换为正确的日期时间格式,然后转换为字符串
s、 index=pd.to_datetime(s.index,格式=“%Y%m%d”)
plt.bar(s.index.astype('str'),s)
plt.xticks(旋转=90)
plt.show()

希望答案会有所帮助。彻底回答问题很费时。如果你的问题解决了,请接受这个解决方案。这个✔ 低于▲/▼ 箭头,在答案的左上角。如果出现更好的解决方案,则可以接受新的解决方案。你也可以用以下方式投票决定答案的有用性:▲/▼ 阿罗,如果你有15+的声望。如果解决方案不能回答问题,请留下评论。谢谢。你的答案有什么问题,你不想接受吗?你因接受答案而获得代表。如果你一般不接受答案,人们将来可能不太愿意回答你的问题。记住,你是在要求别人花时间来帮助你。