Python:如何在Y轴上绘制数字



这是一张财务图表我希望在画布(图)图表上绘制数字,x轴作为时间序列,y轴作为价格,例如我在照片编辑器上设计的图像,以表明我的观点,也共享将用于绘制的数据。

有人能帮我怎样才能达到这个结果吗。以下原始数据在15分钟内重新采样,也按价格分组(LTP-上次交易价格)。

共享原始数据绘制的示例图

  • 您所描述的是Scatter(mode="text")这是下面代码中的第二个跟踪
  • 你的模拟图片还显示了画布上文本周围的线条。这是通过跟踪完成的
  • 大部分代码都是模拟您的数据,因为您没有提供
import pandas as pd
import numpy as np
import plotly.graph_objects as go
# generate some sample data
df = (
pd.DataFrame(
index=pd.MultiIndex.from_product(
[
np.arange(326.75, 324.95, -0.05),
pd.date_range("24-sep-2021 09:00", freq="15min", periods=6),
],
names=["LTP", "Time"],
)
)
.reset_index()
.pipe(
lambda d: d.assign(
BuyVolume=np.random.choice(
np.concatenate([[0], np.random.randint(0, 1000, (len(d)))]),
len(d),
p=[0.9] + [0.1 / len(d) for _ in range(len(d))],
),
SellVolume=np.random.choice(
np.concatenate([[0], np.random.randint(0, 1000, (len(d)))]),
len(d),
p=[0.9] + [0.1 / len(d) for _ in range(len(d))],
),
)
)
)
print(df.head(20).to_markdown())
# create text to appear on chart
df = df.assign(
plotText=lambda d: d["BuyVolume"].astype(str) + "x" + d["SellVolume"].astype(str)
)
# only rows that have either a buy or sell volume
dfp = df.loc[df["plotText"].ne("0x0")]
# ranges for bars around the text
dfx = dfp.groupby("Time").agg(min=("LTP", "min"), max=("LTP", "max"))
fig = go.Figure(
[
go.Bar(
x=dfx.index,
y=dfx["max"] - dfx["min"],
base=dfx["min"],
marker={"color":"white", "line":{"color":"black", "width":3}}
),
go.Scatter(x=dfp["Time"], y=dfp["LTP"], text=dfp["plotText"], mode="text"),
],
)
fig.update_layout(showlegend=False, template="plotly_white")

样本数据

05//tr>td style="text align=right;">7td style="text-align:right;">868//tr>>13//tr>>
0326.752021-09-24 09:00:000
12345326.752021-09-24 10:15:000
6326.72021-09-24 09:00:00326.72021-09-24 09:15:009326.72021-09-24 09:45:00
1011326.72021-09-24 10:15:0012326.652021-09-24 09:00:001314326.652021-09-24 09:30:00
1516326.652021-09-24 10:00:0017326.652021-09-24 10:15:000
18326.62021-09-24 09:00:0019

相关内容

  • 没有找到相关文章

最新更新