【问题标题】:Wrong value in matplotlib yticks [duplicate]matplotlib yticks 中的错误值 [重复]
【发布时间】:2014-08-09 17:44:27
【问题描述】:

我正在尝试从 pandas 数据帧和 matplotlib 在 yticks 中显示错误值

身高数据:
2014-08-08 06:00:00 2609.494 2014-08-08 05:45:00 2609.550 2014-08-08 05:30:00 2609.605 2014-08-08 05:15:00 2609.658 2014-08-08 05:00:00 2609.703 2014-08-08 04:45:00 2609.741 2014-08-08 04:30:00 2609.769 2014-08-08 04:15:00 2609.787 2014-08-08 04:00:00 2609.799 2014-08-08 03:45:00 2609.802

代码:

 import pandas as pd
 df = pd.Dataframe('mydata')
 df.plot()

绘制图表的链接: http://bayanbox.ir/id/7161086291332750314?view

我不知道必须在 yticks 中输入像“2609.703”这样的值而不是图中显示的值

【问题讨论】:

标签: python matplotlib


【解决方案1】:

它没有显示不正确的刻度,它只是显示相对于偏移值的东西(注意 y 轴顶部的文本)。默认情况下,只要您显示较大的数字而它们之间的差异很小,就会发生这种情况。

使用ax.ticklabel_format(...) 最容易控制它。在你的情况下,你想指定useOffset=False

例如:

import matplotlib.pyplot as plt

data = [2609.494, 2609.55, 2609.605, 2609.658, 2609.703,
        2609.741, 2609.769, 2609.787, 2609.799, 2609.802]

fig, ax = plt.subplots()
ax.plot(data)

ax.ticklabel_format(useOffset=False)

plt.show()

或者,如果您使用的是 Pandas DataFrameplot 方法,它的返回值是轴对象,所以只需:

ax = df.plot()
ax.ticklabel_format(useOffset=False)

【讨论】:

    【解决方案2】:

    问题是关于设置绘图的 Y 刻度格式化程序

    import pandas as pd
    import datetime
    import matplotlib.ticker
    
    data = [
    ["2014-08-08 06:00:00",  2609.494],
    ["2014-08-08 05:45:00",  2609.550],
    ["2014-08-08 05:30:00",  2609.605],
    ["2014-08-08 05:15:00",  2609.658],
    ["2014-08-08 05:00:00",  2609.703],
    ["2014-08-08 04:45:00",  2609.741],
    ["2014-08-08 04:30:00",  2609.769],
    ["2014-08-08 04:15:00",  2609.787],
    ["2014-08-08 04:00:00",  2609.799],
    ["2014-08-08 03:45:00",  2609.802]]
    
    df = pd.DataFrame([ [ datetime.datetime.strptime(d[0], "%Y-%m-%d %H:%M:%S"), d[1]] for d in data ])
    
    p = df.plot()
    p.yaxis.set_major_formatter(matplotlib.ticker.FormatStrFormatter("%.1f"))
    

    创建:

    这里最重要的是最后两行,开始只是重新创建数据框。给FormatStrFormatter 的格式字符串是C 风格的格式字符串(这里是一位小数)。

    【讨论】:

      猜你喜欢
      • 2018-06-05
      • 2018-12-30
      • 2019-01-06
      • 2023-03-09
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-05
      相关资源
      最近更新 更多