ABOUT ME

Today
Yesterday
Total
  • 파이썬 Bokeh 이미지 다운로드 파일명 변경
    IT/파이썬 - Bokeh 2021. 11. 13. 17:32

    https://stackoverflow.com/questions/43358427/bokeh-custom-save-tool

     

    Bokeh Custom Save Tool

    I'm Trying to create a custom Save tool in bokeh, and here's what I have: class NewSaveTool(Tool): JS_CODE = """ import * as p from "core/properties" import {ActionTool,

    stackoverflow.com

    본 글은 해당 스택오버플로우를 참고하여 재작성됨.

     

    from bokeh.models import ActionTool
    from bokeh.util.compiler import TypeScript
    from bokeh.core.properties import String
    
    
    class CustomSaveTool(ActionTool):
        CUSTOM_SAVE_TS = """
        import {ActionTool, ActionToolView} from "models/tools/actions/action_tool"
        import * as p from "core/properties"
        import {tool_icon_save} from "styles/icons.css"
    
        export class CustomSaveToolView extends ActionToolView {
          model: CustomSaveTool
    
          async save(name: string): Promise<void> {
            const blob = await this.plot_view.to_blob()
            const link = document.createElement("a")
            link.href = URL.createObjectURL(blob)
            link.download = name // + ".png" | "svg" (inferred from MIME type)
            link.target = "_blank"
            link.dispatchEvent(new MouseEvent("click"))
          }
    
          doit(): void {
            this.save(this.model.save_name)
          }
        }
    
        export namespace CustomSaveTool {
          export type Attrs = p.AttrsOf<Props>
    
          export type Props = ActionTool.Props & {
            save_name: p.Property<string>
          } 
        }
    
        export interface CustomSaveTool extends CustomSaveTool.Attrs {}
    
        export class CustomSaveTool extends ActionTool {
          properties: CustomSaveTool.Props 
          __view_type__: CustomSaveToolView
    
          constructor(attrs?: Partial<CustomSaveTool.Attrs>) {
            super(attrs)
          }
    
          static init_CustomSaveTool(): void {
            this.prototype.default_view = CustomSaveToolView
    
            this.register_alias("save", () => new CustomSaveTool())
    
            this.define<CustomSaveTool.Props>(({String}) => ({
              save_name: [ String ],
            }))
          }
    
          tool_name = "Custom Save"
          icon = tool_icon_save
    
        }
        """
        """Modified save tool allowing custom file names"""
        __implementation__ = TypeScript(CUSTOM_SAVE_TS)
        save_name = String()
    from CustomSave import CustomSaveTool
    from bokeh.plotting import figure
    
    # 소스 생략
        p = figure(x_range=x_label, tools=TOOLS)
        p.vbar(x='under_label', top='height', width=0.9, source=source, line_color='white', fill_color='color')
        p.add_tools(CustomSaveTool(save_name='변경할 이름'))
    # 소스 생략

    CustomSave.py 파일을 만들고, CustomSaveTool을 불러와 add_tools를 사용하여 적용

    댓글

Designed by Tistory.