chart bootstrap javascript jquery graph charts jqplot

javascript - bootstrap - jquery flot chart



información sobre herramientas de jqplot en el gráfico de barras (3)

Estoy usando el jquery plugin jqplot para trazar algunos gráficos de barras. al pasar el mouse, me gustaría mostrar la marca de la barra y su valor en una información sobre herramientas. He intentado

highlighter: { show: true, showTooltip: true, // show a tooltip with data point values. tooltipLocation: ''nw'', // location of tooltip: n, ne, e, se, s, sw, w, nw. tooltipAxes: ''both'', // which axis values to display in the tooltip, x, y or both. lineWidthAdjust: 2.5 // pixels to add to the size line stroking the data point marker }

pero no funciona. la barra se vuelve más clara visualmente, y hay un pequeño punto en la parte superior (lo que idealmente desaparecería, probablemente de las cosas del renderizador de gráficos de líneas), pero no hay información sobre herramientas en ninguna parte. ¿Alguien sabe cómo puedo hacer esto? Tendré muchos bares, así que el eje x estará desordenado y un poco desordenado si los demuestro allí solo.


Estoy usando la versión del complemento resaltador en el siguiente enlace:

https://github.com/tryolabs/jqplot-highlighter

Los parámetros que estoy usando:

highlighter: { show:true, tooltipLocation: ''n'', tooltipAxes: ''pieref'', // exclusive to this version tooltipAxisX: 20, // exclusive to this version tooltipAxisY: 20, // exclusive to this version useAxesFormatters: false, formatString:''%s, %P'', }

Los nuevos parámetros aseguran una ubicación fija donde aparecerá la información sobre herramientas. Prefiero colocarlo en la esquina superior izquierda para evitar problemas al cambiar el tamaño del contenedor div.


No importa, hice una forma indirecta de crear mi propia información sobre herramientas mediante jquery.

Dejé mi configuración de resaltador como estaban en mi pregunta (aunque probablemente no necesites las sugerencias).

En mi archivo js después de configurar el gráfico de barras (después de $.jqplot(''chart'', ... ) configuré un enlace en el mouse sobre el mouse, como muestran algunos de los ejemplos. Lo modifiqué así:

$(''#mychartdiv'').bind(''jqplotDataHighlight'', function (ev, seriesIndex, pointIndex, data ) { var mouseX = ev.pageX; //these are going to be how jquery knows where to put the div that will be our tooltip var mouseY = ev.pageY; $(''#chartpseudotooltip'').html(ticks_array[pointIndex] + '', '' + data[1]); var cssObj = { ''position'' : ''absolute'', ''font-weight'' : ''bold'', ''left'' : mouseX + ''px'', //usually needs more offset here ''top'' : mouseY + ''px'' }; $(''#chartpseudotooltip'').css(cssObj); } ); $(''#chartv'').bind(''jqplotDataUnhighlight'', function (ev) { $(''#chartpseudotooltip'').html(''''); } );

explicación: ticks_array está definido previamente y contiene las cadenas de ticks del eje x. Los data de jqplot tienen los datos actuales debajo del mouse como una matriz de tipo [x-category- #, y-value]. pointIndex tiene el actual # de barra resaltada. Básicamente, usaremos esto para obtener la cadena de ticks.

Luego diseñé la información sobre herramientas para que aparezca cerca de donde está el cursor del mouse. Probablemente necesites restar de mouseX y mouseY un poco si este div está en otros contenedores posicionados.

a continuación, puede estilo #chartpseudotooltip en su CSS. Si desea los estilos predeterminados, puede agregarlo a .jqplot-highlighter-tooltip en el jqplot.css.

Espero que esto sea útil para otros.


Paso por jqplot.highlighter.js y encuentro una propiedad no documentada: tooltipContentEditor . Lo uso para personalizar la información sobre herramientas para mostrar la etiqueta del eje x.

Usa algo como esto:

highlighter:{ show:true, tooltipContentEditor:tooltipContentEditor }, function tooltipContentEditor(str, seriesIndex, pointIndex, plot) { // display series_label, x-axis_tick, y-axis value return plot.series[seriesIndex]["label"] + ", " + plot.data[seriesIndex][pointIndex]; }