mirror of
https://github.com/apache/zeppelin
synced 2026-05-24 09:38:26 +00:00
96 lines
3.2 KiB
Python
96 lines
3.2 KiB
Python
|
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||
|
|
# contributor license agreements. See the NOTICE file distributed with
|
||
|
|
# this work for additional information regarding copyright ownership.
|
||
|
|
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||
|
|
# (the "License"); you may not use this file except in compliance with
|
||
|
|
# the License. You may obtain a copy of the License at
|
||
|
|
#
|
||
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
#
|
||
|
|
# Unless required by applicable law or agreed to in writing, software
|
||
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
|
# See the License for the specific language governing permissions and
|
||
|
|
# limitations under the License.
|
||
|
|
|
||
|
|
# This module provides utitlites for users to configure the inline plotting
|
||
|
|
# backend through a PyZeppelinContext instance (eg, through z.configure_mpl())
|
||
|
|
|
||
|
|
import matplotlib
|
||
|
|
|
||
|
|
def configure(**kwargs):
|
||
|
|
"""
|
||
|
|
Generic configure function.
|
||
|
|
Usage: configure(prop1='foo', prop2='bar', ...)
|
||
|
|
Currently supported zeppelin-specific properties are:
|
||
|
|
interactive - If true show all figures without explicit call to show()
|
||
|
|
via a post-execute hook.
|
||
|
|
angular - If true, bind figures to angular display system.
|
||
|
|
close - If true, close all figures once shown.
|
||
|
|
width, height - Default width / height of the figure in pixels.
|
||
|
|
fontsize - Font size.
|
||
|
|
dpi - dpi of the figure.
|
||
|
|
fmt - Figure format
|
||
|
|
supported_formats - Supported Figure formats ()
|
||
|
|
context - ZeppelinContext instance (requires PY4J)
|
||
|
|
"""
|
||
|
|
_config.update(**kwargs)
|
||
|
|
|
||
|
|
# Broadcast relevant changes to matplotlib RC
|
||
|
|
_on_config_change()
|
||
|
|
|
||
|
|
|
||
|
|
def get(key):
|
||
|
|
"""
|
||
|
|
Get the configuration info given a key
|
||
|
|
"""
|
||
|
|
return _config[key]
|
||
|
|
|
||
|
|
|
||
|
|
def _on_config_change():
|
||
|
|
# dpi
|
||
|
|
dpi = _config['dpi']
|
||
|
|
matplotlib.rcParams['savefig.dpi'] = dpi
|
||
|
|
matplotlib.rcParams['figure.dpi'] = dpi
|
||
|
|
|
||
|
|
# Width and height
|
||
|
|
width = float(_config['width']) / dpi
|
||
|
|
height = float(_config['height']) / dpi
|
||
|
|
matplotlib.rcParams['figure.figsize'] = (width, height)
|
||
|
|
|
||
|
|
# Font size
|
||
|
|
fontsize = _config['fontsize']
|
||
|
|
matplotlib.rcParams['font.size'] = fontsize
|
||
|
|
|
||
|
|
# Default Figure Format
|
||
|
|
fmt = _config['format']
|
||
|
|
supported_formats = _config['supported_formats']
|
||
|
|
if fmt not in supported_formats:
|
||
|
|
raise ValueError("Unsupported format %s" %fmt)
|
||
|
|
matplotlib.rcParams['savefig.format'] = fmt
|
||
|
|
|
||
|
|
# Interactive mode
|
||
|
|
interactive = _config['interactive']
|
||
|
|
matplotlib.interactive(interactive)
|
||
|
|
|
||
|
|
|
||
|
|
def _init_config():
|
||
|
|
dpi = matplotlib.rcParams['savefig.dpi']
|
||
|
|
fmt = matplotlib.rcParams['savefig.format']
|
||
|
|
width, height = matplotlib.rcParams['figure.figsize']
|
||
|
|
fontsize = matplotlib.rcParams['font.size']
|
||
|
|
_config['dpi'] = dpi
|
||
|
|
_config['format'] = fmt
|
||
|
|
_config['width'] = width*dpi
|
||
|
|
_config['height'] = height*dpi
|
||
|
|
_config['fontsize'] = fontsize
|
||
|
|
_config['close'] = True
|
||
|
|
_config['interactive'] = matplotlib.is_interactive()
|
||
|
|
_config['angular'] = False
|
||
|
|
_config['supported_formats'] = ['png', 'jpg', 'svg']
|
||
|
|
_config['context'] = None
|
||
|
|
|
||
|
|
|
||
|
|
_config = {}
|
||
|
|
_init_config()
|