我正在尝试在Python中为Bokeh图添加一个轴,并在指定的位置指定和标签。
我正在制作的情节是每日数据的集合,但我没有使用x_axis_type="datetime"
,因为我不想为数据指定特定的年份。也就是说,我正在绘制1950 - 2015年的数据,但我希望轴只说“1月1日”,而不是“2000年1月1日”。
最初我使用的是CategoricalAxis,但这会挤出标签,因为它为366个刻度中的每一个放置了一个。我想将这个减少到每个月大约12个刻度。
我可以使用LinearAxis将刻度线放在我想要的位置,这是每个月的第一个日期。但是刻度标签是数字的,我想改用字符串标签。
如何更改刻度标签以使用特定字符串?
# Remove default axis
p.xaxis.visible = False
# Add custom axis
ticker = FixedTicker()
ticker.ticks = first_day_of_month
xaxis = LinearAxis(ticker=ticker)
p.add_layout(xaxis, 'below')
第一次尝试使用标准的CategoricalAxis,x轴很拥挤:
修改
DatetimeTickFormatter
并非立即有用,因为数据的源格式不是正确的日期。 x数据实际上是“mmdd”形式的字符串,例如“1230”,这就是我首先使用CategoricalAxis的原因。
使用FuncTickFormatter
已成功,如果有点麻烦。我正在使用下面的代码,基本上给出了我想要的内容。
CustomFuncTickFormatter = FuncTickFormatter(code = '''
return {0: 'January', 366: '', 335: 'December', 305: 'November', 274: 'October', 244: 'September', 213: 'August', 182: 'July', 152: 'June', 121: 'May', 91: 'April', 60: 'March', 31: 'February'}
[tick]
''')
答案 0 :(得分:1)
您应该能够使用public class MyTextBoxColumn:DataGridViewTextBoxColumn
{
public MyTextBoxColumn()
{
CellTemplate = new MyTextBoxCell();
}
}
,x_axis_type="datetime"
以及FixedTicker
(documentation)的自定义实例,并将所有字段设置为DatetimeTickFormatter
。如果由于某种原因无效,您可以随时使用[%d %m]
(documentation)。