python - 我可以将图中的代码更改为自定义文本代码吗?

标签 python bokeh

我正在尝试更改绘图上的 x 轴以获取序数文本值,但我很难找到解决方法。我的目标是:我想展示针对终生中等收入 20 000 美元和 50 000 美元的退休人员的政府计划的 2 项拟议修改的 IRR。

所以,我有 4 个 IRR:20 000 美元的 IRR,2 50 000 美元的 IRR。棘手的是我没有精确的 x 坐标;相反,我使用名义 x 坐标来构建我的直方图箱(使用 .quad() 方法)。

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

我在这里猜测,所以也许我对这个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 中运行良好。

最佳答案

区分 TickerTickeFormatter 可能很有用。前者根据绘图范围的实际开始结束选择放置刻度的位置。后者控制这些刻度的显示方式。听起来您想要控制刻度的外观比其他任何东西都重要,即您想要以某种方式不同地显示一些标准化坐标。这表明您需要自定义 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)

生成此图像:

enter image description here

根据您的需要,您可能希望将 Grid 股票代码设置为相同的固定股票代码(以便网格线与刻度线匹配)或仅禁用 x 网格。

关于python - 我可以将图中的代码更改为自定义文本代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40453228/

相关文章:

python - python 中的 Bokeh 库 : can I provide a custom y range in terms of values to have?

python - 如何消除python中的分组对象

python - 如何在 Python 发布者和 C++ 订阅者之间实现简单的 ZeroMQ Pub-Sub 通信?

python - CherryPy - 将复选框选择保存到变量

python - 使用python查询SQL

python bokeh 在服务器端或客户端运行

python - 在 Bokeh 中按下按钮时如何更改数据框?

python - 如何设置 Bokeh 应用程序以便可以通过互联网访问它?

javascript - 在 Bokeh 交互式线图中从 ColumnDataSource 选择行

python - 许多数组的插值的矢量化总和