gpt4 book ai didi

python - Bokeh 字形被屏幕边缘切断

转载 作者:太空宇宙 更新时间:2023-11-03 16:50:50 24 4
gpt4 key购买 nike

我正在 Bokeh 中绘制一些不同大小的圆圈(气泡图),但 map 边缘的异常值太大,整个气泡没有显示在屏幕空间上。有没有办法确保 Bokeh 图最初(首次渲染时)包含所有内容,无论气泡有多大?我可以使用一些解决方法,例如在气泡边缘绘制不可见的字形,但我更喜欢更直接的解决方案,我在文档或论坛中找不到该解决方案。谢谢!

目前相关代码如下:

    p = figure(title=title, tools=TOOLS, plot_width=800, plot_height=700)
p.xaxis.axis_label = x_label
p.yaxis.axis_label = y_label
p.circle(x=x_data,y=y_data, source=source,\
size=bubble_radi,line_color=border_color,line_width=1,fill_alpha=.8)

最佳答案

当您设置字形的大小时,它是以“屏幕”单位定义的,与数据单位没有直接关系。我认为确保圆的任何部分都不会被切断的最简单方法是以数据单位定义它们的半径。这可以通过设置 radius 属性(默认情况下以数据单位定义)而不是 size 属性来实现。 (例如 p.circle(x=x_data, y=y_data, source=source, radius=bubble_radi) 并根据最小和最大数据点加/减计算所需的 x 范围和 y_范围圆半径。

现在,需要考虑的一件棘手的事情是圆只能有一个半径,该半径必须以 x 数据单位或 y 数据单位定义。假设单位相同,您可能需要根据 y 数据尺寸设置半径,因为图形宽度大于图形高度。为此,您可以使用 radius_dimension 属性:p.circle(x=x_data, y=y_data, source=source, radius=bubble_radi, radius_dimension='y')

完整的示例在这里:

from bokeh.plotting import figure, output_file, show
from bokeh.models import ColumnDataSource, Circle
import numpy as np
x_data, y_data = np.arange(0, 100, 10), 100-np.arange(0, 100, 10)

output_file("bubbles.html")

bubble_radi = 10.
border_color = 'red'

source = ColumnDataSource({'x_data': x_data, 'y_data': y_data})

x_range = (x_data.min() - bubble_radi, x_data.max() + bubble_radi)
y_range = (y_data.min() - bubble_radi, y_data.max() + bubble_radi)
p = figure(title='title', plot_width=800, plot_height=700, x_range=x_range,\
y_range=y_range)
p.xaxis.axis_label = 'x_label'
p.yaxis.axis_label = 'y_label'
p.circle(x=x_data, y=y_data, source=source,\
radius=bubble_radi, radius_dimension='y',\
line_color=border_color,line_width=1,fill_alpha=.8)

show(p)

返回此图: enter image description here

关于python - Bokeh 字形被屏幕边缘切断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35852500/

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