我正在尝试更改绘图上的 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 中运行良好。
最佳答案
区分 Ticker
和 TickeFormatter
可能很有用。前者根据绘图范围的实际开始
和结束
选择放置刻度的位置。后者控制这些刻度的显示方式。听起来您想要控制刻度的外观比其他任何东西都重要,即您想要以某种方式不同地显示一些标准化坐标。这表明您需要自定义 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 网格。
关于python - 我可以将图中的代码更改为自定义文本代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40453228/