【问题标题】:Trouble setting Pandas plot X-axis设置 Pandas 绘制 X 轴的问题
【发布时间】:2020-07-31 11:56:04
【问题描述】:

我有以下数据框:

            A                B
0    0.020336         0.017300
1    0.068807         0.042916
2    0.543051         0.261117
3    2.643319         1.208245
4    5.295754         2.425145
5   26.091538        11.936791
6   52.407236        23.968562
7  261.233778       119.663701
8  522.850657       239.565097
9  829.366556       378.151528

我想在 XY 图表上绘制,其中 X 轴刻度是索引值,Y 轴刻度代表范围 [0, 900]。将相应地绘制列中的数据。当我目前使用:

df.plot(lw=2, colormap='jet', marker='.', markersize=8)
plt.show()

我得到以下信息:

Y 轴很好,但 X 轴似乎显示了索引值的缩放范围。

如何使 X 轴成为数据框索引的实际值? (曲线应该以这种方式开始出现抛物线)。

编辑:

这将是所需的输出,但刻度数正确:

【问题讨论】:

  • X 轴值已经存在...以科学计数法表示。您想要实际的标准表格吗?
  • @J.Linne 该符号改变了图形的真实表示(和比例)。我希望 X 轴的 10 个刻度由 10 个实际值表示。该图应该有一条看起来像抛物线的曲线。例如,较低的数字在开始时都“聚集”在一起,我希望它们均匀分布,每个数字都有自己的 X-tick。
  • 您的依赖似乎是线性的,并且情节具有正确的科学格式。例如。 1.6e7=16000000。对于线性关系:如果将 x 值加倍,则 y 值会加倍。也许您想在 x 轴上进行对数缩放?
  • 这能回答你的问题吗? Python Pandas: How to set Dataframe Column value as X-axis labels。你会做df.plot(..., xticks=df.index)

标签: python pandas matplotlib


【解决方案1】:
df.columns = ['xaxis', 'A', 'B']
numbers = np.arange(0, 900)
df.plot(x='xaxis', y=numbers, colormap='jet')
plt.show()

【讨论】:

  • 虽然此代码可以解决问题,including an explanation 说明如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提出问题的人。请edit您的答案添加解释并说明适用的限制和假设。
【解决方案2】:
# Save the index to use for labels.
x_values = df.index

# Reset the index to [0, N).
df = df.reset_index(drop=True)

# Plot the re-indexed data.
ax = df.plot(lw=2, colormap='jet', marker='.', markersize=8)

# Use the saved labels.
ax.set_xticklabels(x_values)

【讨论】:

  • 图表现在可以正确绘制,但我的标签与您的不符,完全按照您在此处编写的。我只得到大约 5 个滴答声。
  • 您能帮我打印df 并将格式化的文本粘贴到您的问题中吗?我可以帮助处理示例数据。
  • 数据框现在已粘贴到 OP 中。
  • 设法让它工作,必须在plot()调用中设置xticks
  • 我的错,我忘了分配ax = df.plot(...)。你能检查一下这个解决方案是否适合你吗?
猜你喜欢
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-20
  • 1970-01-01
相关资源
最近更新 更多