Python Bokeh:如何保持 y 轴刻度线稳定?
Python Bokeh: How do I keep the y-axis tick marks stable?
这里我拿了一些gapminder.org data and looped through the years to create a series of charts (which I ) by modifying the Making Interactive Visualizations with Bokeh笔记本。
问题在于,当中东国家在 1970 年代浮上榜首时,y 轴刻度线(和图例)会受到干扰。在构建绘图时,我将尽可能多的事情保留在年循环之外,因此我的 y 轴代码如下所示:
# Personal income (GDP per capita)
y_low = int(math.floor(income_df.min().min()))
y_high = int(math.ceil(income_df.max().max()))
y_data_range = DataRange1d(y_low-0.5*y_low, 1000000*y_high)
# ...
for year in columns_list:
# ...
# Build the plot
plot = Plot(
# Children per woman (total fertility)
x_range=x_data_range,
# Personal income (GDP per capita)
y_range=y_data_range,
y_scale=LogScale(),
plot_width=800,
plot_height=400,
outline_line_color=None,
toolbar_location=None,
min_border=20,
)
# Build the axes
xaxis = LinearAxis(ticker=SingleIntervalTicker(interval=x_interval),
axis_label="Children per woman (total fertility)",
**AXIS_FORMATS)
yaxis = LogAxis(ticker=LogTicker(),
axis_label="Personal income (GDP per capita)",
**AXIS_FORMATS)
plot.add_layout(xaxis, 'below')
plot.add_layout(yaxis, 'left')
如您所见,我将数据范围扩大了 10^6 倍,但没有任何效果。是否需要添加一些参数来保持 y 轴刻度线(和图例)稳定?
不要使用 DataRange1d
,那才是 "auto-ranging" 的实际作用。如果您知道要始终显示在前面的完整范围,请使用 Range1d
:
Plot(y_range=Range1d(low, high), ...)
或更多为方便起见,这也适用:
Plot(y_range=(low, high), ...)
这里我拿了一些gapminder.org data and looped through the years to create a series of charts (which I
问题在于,当中东国家在 1970 年代浮上榜首时,y 轴刻度线(和图例)会受到干扰。在构建绘图时,我将尽可能多的事情保留在年循环之外,因此我的 y 轴代码如下所示:
# Personal income (GDP per capita)
y_low = int(math.floor(income_df.min().min()))
y_high = int(math.ceil(income_df.max().max()))
y_data_range = DataRange1d(y_low-0.5*y_low, 1000000*y_high)
# ...
for year in columns_list:
# ...
# Build the plot
plot = Plot(
# Children per woman (total fertility)
x_range=x_data_range,
# Personal income (GDP per capita)
y_range=y_data_range,
y_scale=LogScale(),
plot_width=800,
plot_height=400,
outline_line_color=None,
toolbar_location=None,
min_border=20,
)
# Build the axes
xaxis = LinearAxis(ticker=SingleIntervalTicker(interval=x_interval),
axis_label="Children per woman (total fertility)",
**AXIS_FORMATS)
yaxis = LogAxis(ticker=LogTicker(),
axis_label="Personal income (GDP per capita)",
**AXIS_FORMATS)
plot.add_layout(xaxis, 'below')
plot.add_layout(yaxis, 'left')
如您所见,我将数据范围扩大了 10^6 倍,但没有任何效果。是否需要添加一些参数来保持 y 轴刻度线(和图例)稳定?
不要使用 DataRange1d
,那才是 "auto-ranging" 的实际作用。如果您知道要始终显示在前面的完整范围,请使用 Range1d
:
Plot(y_range=Range1d(low, high), ...)
或更多为方便起见,这也适用:
Plot(y_range=(low, high), ...)