【问题标题】:Error Getting Numeric Value of Plot Tick Label获取绘图刻度标签的数值时出错
【发布时间】:2019-04-12 09:04:46
【问题描述】:

在将刻度标签值转换为数字类型时,我收到 ValueError: could not convert string to float

根据Text documentation,应该返回一个字符串。

MVP

fig, ax = plt.subplots()
ax.plot( range( 5 ), range( 5 ) )

for lbl in ax.get_xticklabels():
    float( lbl.get_text() )

【问题讨论】:

  • 如果你这样做print(lbl.get_text()),输出是什么?
  • 这似乎是字符串,例如-0.5
  • 格式化程序是否可能发生了一些奇怪的事情?
  • 当我使用你的代码并将float( lbl.get_text() )更改为print(float(lbl.get_text())时,我得到了无法转换为字符串的空字符串
  • 如果我在 for 循环之前放置 plt.show() ,那么奇怪的是,我得到了预期的输出,您的问题在 stackoverflow.com/questions/32700935/… bascally 的答案之一中得到了解释,直到您不调用 plt.show() xticks未填充

标签: python matplotlib


【解决方案1】:

您当前的代码在填充之前获取 xtixk 标签 所以如果你这样做了

fig, ax = plt.subplots()
ax.plot( range( 5 ), range( 5 ) )

for lbl in ax.get_xticklabels():
    print(lbl.get_text())

您会看到所有标签都是空字符串。如果您将plt.show() 放在 for 循环之前,它应该会填充列表并且您应该能够获取标签。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    相关资源
    最近更新 更多