【问题标题】:How to fix the range of Volume in 2nd y-Axis如何固定第二个 y 轴的音量范围
【发布时间】:2019-06-26 23:48:26
【问题描述】:

我的完整代码:

import matplotlib.pyplot as plt
plt.style.use('ggplot')
import pandas as pd
import numpy as np

path = 'C:\\MyPath\\File1.txt'
dff = pd.read_csv(path, sep=",")
dff.columns = ['Date','Time','Price','Volume']
dff.plot('Time', ['Price', 'Volume'], secondary_y='Volume')
plt.show()

我有一个价格量数据框,我使用以下语法在第二个 y 轴上绘制 Volume

dff.plot('Time', ['Price', 'Volume'], secondary_y='Volume')

Volume 列中的数据范围为 0-500。当我使用上述语法绘制它时,第二个 y 轴取 Volume 的最大值和最小值并自动调整范围。

我需要在绘图时将支架固定在第二个 y 轴上。我希望Volume 的范围为 0、50、100、150、200、250、300、350、400、450、500

样本数据:

       Date        Time      Price     Volume
72612  31/01/2019  15:26:58  135.85    100
72613  31/01/2019  15:27:02  135.90    110
72614  31/01/2019  15:27:03  135.95    140
72615  31/01/2019  15:27:07  135.95    100
72616  31/01/2019  15:27:10  135.85    60
72617  31/01/2019  15:27:11  135.90    150
72618  31/01/2019  15:27:13  135.95    100
72619  31/01/2019  15:27:15  135.95    100
72620  31/01/2019  15:27:18  135.95    30
72621  31/01/2019  15:27:22  135.95    10

示例图片更清晰

【问题讨论】:

标签: python python-3.x dataframe matplotlib


【解决方案1】:

由于您想控制/修改辅助 y 轴刻度标签,我会使用稍微不同的方法来绘制:一次绘制一列。绘制辅助 y 轴数据后,您可以通过提供所需刻度标签的列表来覆盖默认刻度标签。根据您提供的 DataFrame,以下是一种方法

# Read in your dataframe here

ax  = dff.plot('Time','Price')
ax2 = dff.plot('Time','Volume', ax=ax, secondary_y=True)

y_ticks = range(0, 501, 50)
ax2.set_yticklabels(y_ticks)
plt.show()

【讨论】:

  • 但是体积线没有按照新的 y 轴绘制。就像没有超过 350 的音量值,而是音量线(标记为红色)。
  • @Rohit:我不明白这一点。请解释清楚。目前,我的图中绘制的数据(音量的橙色线)是问题中数据框中的 actual 数据。正如你所问,我刚刚修改了刻度标签。所以我图中的刻度标签 50 实际上意味着该行中的 volume = 20。 ticklabel 100 实际上是数据框中的数据点 40 等等。我的答案中没有高于 350 的值的原因是因为您提供的数据框中的最大容量为 150,这意味着最高 y-tick 标签为 350。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多