我可以将情节中的股票代码更改为自定义文本代码吗?


问题内容

我正在尝试更改绘图上的x轴以获取序数文本值,并且很难找到一种解决方法。这是我的目标:我想显示政府计划的2项拟议修改的内部收益率,该计划针对一生中间收入分别为2万美元和5万美元的退休人员。

因此,我有4个IRR:2个代表20 000美元的IRR,2个代表50000
$的IRR。棘手的是,我没有确切的x坐标。取而代之的是,我使用名义上的x坐标来构建我的直方图箱(使用.quad()方法)。

然后,使用FixedTicker类,我只显示了两个代码:位于描述每个收入类别的垃圾箱之间的代码。在这一点上,我这样做是希望可以将这些固定的股票行情指示器更改为其他一些自定义股票行情指示器(也许使用字典?),但是我真的不知道。

我在这里猜测,所以也许我对FixedTicker策略完全错了。实际上有没有办法修改股票行情?如果没有,还有其他办法吗?

我尝试在x轴上使用类别,但是问题是我没有像category:value这样的对,更像是category:(value,value)。

这是我的代码:

from bokeh.io import show, output_notebook
from bokeh.plotting import figure
from bokeh.models import FixedTicker

output_notebook()

irr_fed  = [4.24, 3.04]
irr_prov = [2.59, 2.83]

plot = figure(title="Internal Rates of Return: Federal vs. Provincial",
       y_range=(0,5), x_range=(0,12))

plot.quad(top=[irr_fed[0], irr_prov[0], irr_fed[1], irr_prov[1]], bottom=0,
          left=[1,3.5,7,9.5], right=[2.5,5,8.5,11])

plot.xaxis[0].ticker=FixedTicker(ticks=[3, 9])

show(plot)

我会显示我到这里的情节,但是由于我是新来的,而且信誉不够,所以我还不能发布图片。如果您想看到它,则代码在Notebook中可以正常工作。


问题答案:

找出aTicker和之间的区别可能很有用TickeFormatter。前者选 在那里
把蜱,根据实际startend情节的范围。后者控制那些刻度线的显示方式。听起来您想比其他任何事情都更能控制刻度线的 外观
,即您想以某种方式显示一些标准化坐标。这表明您想要一个自定义TickFormatter格式来设置固定刻度线。

特别是,您可能会看一下,FuncTickFormatter它可让您提供JS的一行或一小段以任意控制刻度线的格式。这是一个例子:

from bokeh.models import FuncTickFormatter, FixedTicker
from bokeh.plotting import figure, show, output_file

output_file("formatter.html")

p = figure(plot_width=500, plot_height=500, x_range=(0,10))
p.circle([3, 9], [4, 8], size=30)

p.xaxis.ticker=FixedTicker(ticks=[3, 9])
p.xaxis.formatter = FuncTickFormatter(code="""
    var mapping = {3: "$20 000", 9: "$50 000"};
    return mapping[tick];
""")

show(p)

生成此图像:

在此处输入图片说明

根据您的需要,您可能希望将Grid股票行情指示器也设置为相同的固定股票行情(以便网格线与行情线匹配)或仅禁用x网格。