Есть ли способ считывать уровень масштабирования графика mpld3, то есть диапазон видимой оси x и y? Я попытался использовать d3.behavior.zoom, но я не знаю, как я могу получить поведение масштабирования моего участка mpld3.Получение уровня масштабирования графика mpld3
0
A
ответ
1
Вы можете сделать плагин mpld3
сделать это, используя узор, который я разработал для interactively adding callouts to scatter plots. Это намного проще, на самом деле, так что это хороший пример простой, но полезный плагин-:
import matplotlib.pyplot as plt, mpld3
%matplotlib inline
class ZoomSizePlugin(mpld3.plugins.PluginBase):
JAVASCRIPT = r"""
// little save icon
var my_icon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gUTDC0v7E0+LAAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAAa0lEQVQoz32QQRLAIAwCA///Mz3Y6cSG4EkjoAsk1VgAqspecVP3TTIA6MHTQ6sOHm7Zm4dWHcC4wc3hmVzT7xEbYf66dX/xnEOI7M9KYgie6qvW6ZH0grYOmQGOxzCEQn8C5k5mHAOrbeIBWLlaA3heUtcAAAAASUVORK5CYII=";
// create plugin
mpld3.register_plugin("zoomSize", ZoomSizePlugin);
ZoomSizePlugin.prototype = Object.create(mpld3.Plugin.prototype);
ZoomSizePlugin.prototype.constructor = ZoomSizePlugin;
ZoomSizePlugin.prototype.requiredProps = [];
ZoomSizePlugin.prototype.defaultProps = {}
function ZoomSizePlugin(fig, props){
mpld3.Plugin.call(this, fig, props);
// create save button
var SaveButton = mpld3.ButtonFactory({
buttonID: "save",
sticky: false,
onActivate: function(){save_zoom(fig);}.bind(this),
icon: function(){return my_icon;},
});
this.fig.buttons.push(SaveButton);
};
function save_zoom(fig) {
var ax= fig.axes[0],
extent = "";
extent = extent + "left=" + ax.x.invert(0);
extent = extent + ", right=" + ax.x.invert(ax.width);
extent = extent + ", bottom=" + ax.y.invert(ax.height);
extent = extent + ", top=" + ax.y.invert(0);
prompt("Copy extent of zoomed axis:", extent);
}
"""
def __init__(self):
self.dict_ = {"type": "zoomSize"}
plt.plot([3,1,4,1,5,9,2,6,5,3,5,8], 'ks-', mew=1, mec='w')
mpld3.plugins.connect(plt.gcf(), ZoomSizePlugin())
mpld3.display()
Большое спасибо! Я, наконец, нашел время попробовать и работает как шарм :-) – CWelling