gpt4 book ai didi

python - Bokeh 图像绘图的较小范围填充

转载 作者:行者123 更新时间:2023-12-01 08:11:30 25 4
gpt4 key购买 nike

我使用的是 bokeh 1.0.4,我想使用 match_aspect=True 在 bokeh 中生成图像图。下面是一个示例代码用于说明:

from bokeh.models.ranges import DataRange1d
from bokeh.plotting import figure, show
import numpy as np

arr = np.array([[1,2,3],[4,5,6]])

plot = figure(match_aspect=True)
plot.image([arr], x=0, y=0, dw=3, dh=2)

show(plot)

这就是我得到的: Plot without given ranges

数据周围有很多空白空间,对于我的应用程序来说太多了,我希望轴更紧 - 知道目前无法完美完成此操作,请参阅此 other question在“更新”部分。

所以我尝试使用参数range_padding,它应该与图像尺寸相关(默认单位:百分比),但它对我不起作用,例如如果我使用

from bokeh.models.ranges import DataRange1d
from bokeh.plotting import figure, show
import numpy as np

arr = np.array([[1,2,3],[4,5,6]])

x_range = DataRange1d(range_padding=5, range_padding_units='percent')
y_range = DataRange1d(range_padding=5, range_padding_units='percent')

plot = figure(x_range=x_range, y_range=y_range, match_aspect=True)
plot.image([arr], x=0, y=0, dw=3, dh=2)

show(plot)

内边距更大:

Plot using <code>range_padding</code>

0.05 这样的小填充值似乎没有效果。另外,我不能对范围使用 startend 参数,因为这样匹配的宽高比丢失。数据空间中的正方形应与屏幕上的正方形相匹配。

我在此处使用 range_padding 参数的方式中是否遗漏了某些内容?有谁知道如何减少图像周围的空间,这样匹配方面是否保留?

更新

我不想将绘图的高度和宽度设置为固定值,因为我还想添加一个颜色条,也许稍后添加其他东西,这将以不可预测的方式增加绘图尺寸,使得纵横比不匹配不再有。

最佳答案

您可以接受此解决方法吗(Bokeh v1.0.4)?

from bokeh.models.ranges import DataRange1d
from bokeh.plotting import figure, show
from bokeh.layouts import Row
from bokeh.palettes import Greys
from bokeh.models import LinearColorMapper, ColorBar
import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

sx = 3
sy = 2

x_range = DataRange1d(start = 0, end = sx, bounds = (0, sx), range_padding = 5, range_padding_units = 'percent')
y_range = DataRange1d(start = 0, end = sy, bounds = (0, sy), range_padding = 5, range_padding_units = 'percent')

pw = 400
ph = pw * sy / sx
plot = figure(plot_width = pw,
plot_height = ph,
x_range = x_range,
y_range = y_range,
match_aspect = True)
plot.image([arr], x = 0, y = 0, dw = sx, dh = sy)

color_mapper = LinearColorMapper(palette = Greys[6], low = arr.min(), high = arr.max())
colorbar_plot = figure(plot_height = ph, plot_width = 69, x_axis_location = None, y_axis_location = None, title = None, tools = '', toolbar_location = None)
colorbar = ColorBar(color_mapper = color_mapper, location = (0, 0))
colorbar_plot.add_layout(colorbar, 'left')

show(Row(plot, colorbar_plot))

结果:

enter image description here

关于python - Bokeh 图像绘图的较小范围填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55225823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com