【问题标题】:Add secondary x axis based on pd.Series of strings基于 pd.Series 字符串添加辅助 x 轴
【发布时间】:2019-10-04 22:00:48
【问题描述】:

我有一个看起来像这样的 pandas df:

|---------------------|------------------|-----------|
|      timestamp      |     clocktime    |   value   |
|---------------------|------------------|-----------|
|          1          |       8:30       |    10     |
|---------------------|------------------|-----------|
|          2          |       8:31       |    20     |
|---------------------|------------------|-----------|
|          3          |       8:33       |    15     |
|---------------------|------------------|-----------|

我已经设法在 x 轴上使用 timestamp 和在 y 轴上使用 value 绘制它。有没有办法用clocktime 创建第二个x 轴作为它的值?问题是我有超过 100k 行,所以我不能打印每个 clocktime 条目(每个 clocktime 条目都是一个字符串)。有没有办法在同一个图上将timestampclocktime 显示为两个单独的x 轴,并且两者都有一些智能刻度间距?我正在使用 matplotlib,并使用 Axes.axes 对象绘制它。

【问题讨论】:

  • 你能用一些代码编辑你的帖子吗?

标签: python pandas matplotlib


【解决方案1】:

我不确定“智能刻度间距”是什么意思,但您可以执行以下操作。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
b=pd.DataFrame({"timestamp":[1,2,3],"clocktime": ["8:30","8:31","8:33"],"value":[10,20,15]})
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax2 = ax1.twiny()
ax1.plot(b["clocktime"], b["value"])
ax2.plot(b["timestamp"], b["value"]) 
plt.xticks(np.arange(min(b["timestamp"]),max(b["timestamp"])+1, 1.0))
plt.show()

【讨论】:

  • 我的意思是我有 100k clocktime 值,所以我无法打印所有这些值,这正是该解决方案对我不起作用的原因。我最终做的是从系列中挑选 n 个等距的条目,并将它们与我的 timestamp 值匹配,然后只绘制它们。现在工作正常
猜你喜欢
  • 2015-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
  • 2022-10-20
相关资源
最近更新 更多