散景将刻度标签从数字更改为文本
Bokeh change tick label from a number to text
我正在使用 plot.circle 绘制评分系统。我试图将成绩表示为标签而不是数字。例如。 A+=1, A=2, B=3, C=4, D=5.
图表上绘制的分数是成绩的一小部分。例如。 point1 = 1.6,位于 A+ 和 A 之间。
我找不到将轴的标签更改为代表我的成绩标签的方法,因此我尝试创建第二个轴,一个分类轴,并隐藏原始轴(包含评分的轴值。)
我在使用这种方法时遇到的问题是我的分类轴的刻度与原始轴的刻度不对齐。
单间隔代码确保两个轴的刻度数匹配。但刻度线仍然没有对齐。
当我设置原始轴的 y_range 时,主要刻度从图表底部开始到顶部结束。分类轴的行为不同。
这是我的代码:
from bokeh.plotting import figure, output_file, show
from bokeh.models.tickers import SingleIntervalTicker
from bokeh.models import CategoricalAxis, FactorRange
output_file("axes.html")
x = [1,2,3,4,5,6]
y = [1,2.3,3,4.5,5,6]
p = figure(plot_width=400, plot_height=400)
#p = figure(plot_width=400, plot_height=400, y_range=[0,10])
p.circle(x, y, size=10)
s_i_ticker = SingleIntervalTicker()
s_i_ticker.interval = 1
s_i_ticker.num_minor_ticks = 0
p.yaxis[0].ticker= s_i_ticker
#p.yaxis[0].bounds = (1, 10)
#p.yaxis[0].visible = False
factors = ["A+", "A", "B", "C", "D", "E", "F"]
f_range = FactorRange(factors=factors)
help(CategoricalAxis)
p.extra_y_ranges = {"foo": f_range}
p.circle(x, factors, color="blue", y_range_name="foo")
new_axis = CategoricalAxis(y_range_name="foo")
#new_axis.bounds = (1, 10)
#new_axis.ticker= s_i_ticker
p.add_layout(new_axis, 'left')
show(p)
我无法 post 结果图表的屏幕截图,因为我还不能 post Whosebug 上的图像。代码可以按原样运行。
有什么解决办法吗?想法?建议?
我使用解决方法解决了我的问题:
plot.text(..)
我在图表的波段中将文本绘制为 'watermarks',以便它显示为该区域含义的指示器。例如。该区域的积分在'B'等级区域。
我正在使用 plot.circle 绘制评分系统。我试图将成绩表示为标签而不是数字。例如。 A+=1, A=2, B=3, C=4, D=5.
图表上绘制的分数是成绩的一小部分。例如。 point1 = 1.6,位于 A+ 和 A 之间。
我找不到将轴的标签更改为代表我的成绩标签的方法,因此我尝试创建第二个轴,一个分类轴,并隐藏原始轴(包含评分的轴值。)
我在使用这种方法时遇到的问题是我的分类轴的刻度与原始轴的刻度不对齐。 单间隔代码确保两个轴的刻度数匹配。但刻度线仍然没有对齐。
当我设置原始轴的 y_range 时,主要刻度从图表底部开始到顶部结束。分类轴的行为不同。
这是我的代码:
from bokeh.plotting import figure, output_file, show
from bokeh.models.tickers import SingleIntervalTicker
from bokeh.models import CategoricalAxis, FactorRange
output_file("axes.html")
x = [1,2,3,4,5,6]
y = [1,2.3,3,4.5,5,6]
p = figure(plot_width=400, plot_height=400)
#p = figure(plot_width=400, plot_height=400, y_range=[0,10])
p.circle(x, y, size=10)
s_i_ticker = SingleIntervalTicker()
s_i_ticker.interval = 1
s_i_ticker.num_minor_ticks = 0
p.yaxis[0].ticker= s_i_ticker
#p.yaxis[0].bounds = (1, 10)
#p.yaxis[0].visible = False
factors = ["A+", "A", "B", "C", "D", "E", "F"]
f_range = FactorRange(factors=factors)
help(CategoricalAxis)
p.extra_y_ranges = {"foo": f_range}
p.circle(x, factors, color="blue", y_range_name="foo")
new_axis = CategoricalAxis(y_range_name="foo")
#new_axis.bounds = (1, 10)
#new_axis.ticker= s_i_ticker
p.add_layout(new_axis, 'left')
show(p)
我无法 post 结果图表的屏幕截图,因为我还不能 post Whosebug 上的图像。代码可以按原样运行。
有什么解决办法吗?想法?建议?
我使用解决方法解决了我的问题:
plot.text(..)
我在图表的波段中将文本绘制为 'watermarks',以便它显示为该区域含义的指示器。例如。该区域的积分在'B'等级区域。