{"id":6272,"date":"2014-04-10T13:15:40","date_gmt":"2014-04-10T13:15:40","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=6272"},"modified":"2019-06-03T09:35:53","modified_gmt":"2019-06-03T09:35:53","slug":"jpgraph-creacion-graficas-dinamicas-php","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/","title":{"rendered":"JpGraph &#8211; Creaci\u00f3n de gr\u00e1ficas din\u00e1micas con PHP"},"content":{"rendered":"<p><strong>JpGraph<\/strong> es una librer\u00eda <strong>PHP<\/strong> para <strong>crear gr\u00e1ficas din\u00e1micas con PHP<\/strong> que me sac\u00f3 de un apuro har\u00e1 un par de a\u00f1os y que ahora de nuevo me vuelve a solucionar la papeleta.<\/p>\n<p>Es una librer\u00eda que existe hace muchos a\u00f1os, el sistema est\u00e1 muy depurado y soporta multitud de funcionalidades, por lo que seguramente encontrar\u00e1s soluci\u00f3n a casi cualquier necesidad en el \u00e1mbito de creaci\u00f3n de gr\u00e1ficas. Se pueden crear gr\u00e1ficas lineales, gr\u00e1ficas de barras, tartas, etc. Adem\u00e1s, la mayor\u00eda de las configuraciones de las gr\u00e1ficas vienen con opciones por defecto, as\u00ed que resulta bastante sencillo obtener resultados r\u00e1pidamente.<\/p>\n<p>Es necesario tener conocimientos de la programaci\u00f3n orientada a objetos (clases) para entender el funcionamiento de esta librer\u00eda y en concreto el ejemplo que vamos a ilustrar.<\/p>\n<p>Para a\u00f1adir estas gr\u00e1ficas a nuestra p\u00e1gina lo primero que tendremos que hacer es descargar la librer\u00eda JpGraph. En el ejemplo en funcionamiento estamos utilizando la versi\u00f3n 4.2.6 compatible con PHP 7 y liberada el 28\/11\/2018.<\/p>\n<p>La tem\u00e1tica del ejemplo intentamos representar el volumen de ventas mensual de 3 tiendas de ejemplo. Vamos a utilizar una gr\u00e1fica lineal donde en el eje vertical (Y) va a representar el n\u00famero de pedidos y el eje horizontal (X) estableceremos los meses del a\u00f1o. Agregaremos una leyenda indicando el color de la l\u00ednea de cada tienda. La gr\u00e1fica del resultado del ejemplo es como la que se muestra a continuaci\u00f3n:<\/p>\n<p><a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/04\/jpgraph.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6273 size-full\" title=\"JpGraph - Evoluci\u00f3n de pedidos - Gr\u00e1fica lineal\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/04\/jpgraph.png\" alt=\"jpgraph\" width=\"992\" height=\"407\" srcset=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/04\/jpgraph.png 992w, https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/04\/jpgraph-300x123.png 300w\" sizes=\"auto, (max-width: 992px) 100vw, 992px\" \/><\/a><\/p>\n<p>Para conseguir este efecto tendremos que crear 2 archivos.<\/p>\n<p>En tu archivo <strong>HTML<\/strong> o <strong>PHP<\/strong> principal debes agregar dentro de la etiqueta &lt;body&gt; la imagen de la siguiente forma:<\/p>\n<div id=\"wpshdo_1\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_1\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_1\"><\/a><a id=\"wpshat_1\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_1\"  onClick=\"javascript:wpsh_toggleBlock(1)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_code(1)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_print(1)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_1\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"html4strict\" style=\"font-family:monospace;\"><span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/img.html\"><span class=\"kw2\">img<\/span><\/a> <span class=\"kw3\">src<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;linear_plot.php&quot;<\/span> <span class=\"kw3\">alt<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;&quot;<\/span> <span class=\"kw3\">border<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;0&quot;<\/span>&gt;<\/span><\/pre><\/div><\/div>\n<p>Tal y como podemos observar, en el atributo src estamos colocando la ruta del script <strong>PHP<\/strong> que se encargar\u00e1 de generar la gr\u00e1fica. En el archivo <em>linear_plot.php<\/em> que genera la gr\u00e1fica incluimos las librer\u00edas apropiadas para el tipo de gr\u00e1fica que deseemos mostrar, instanciamos el objeto <strong>JpGraph<\/strong> correspondiente, cargamos los datos a visualizar y llamamos a los m\u00e9todos adecuados para mostrar la imagen. Puedes ver el c\u00f3digo completo a continuaci\u00f3n:<\/p>\n<div id=\"wpshdo_2\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_2\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_2\"><\/a><a id=\"wpshat_2\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_2\"  onClick=\"javascript:wpsh_toggleBlock(2)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_code(2)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_print(2)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_2\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"php\" style=\"font-family:monospace;\"><span class=\"kw2\">&lt;?php<\/span>\n<span class=\"kw1\">require_once<\/span> <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'src\/jpgraph.php'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"kw1\">require_once<\/span> <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'src\/jpgraph_line.php'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"re0\">$datay1<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span>20<span class=\"sy0\">,<\/span>15<span class=\"sy0\">,<\/span>23<span class=\"sy0\">,<\/span>15<span class=\"sy0\">,<\/span>80<span class=\"sy0\">,<\/span>20<span class=\"sy0\">,<\/span>45<span class=\"sy0\">,<\/span>10<span class=\"sy0\">,<\/span>5<span class=\"sy0\">,<\/span>45<span class=\"sy0\">,<\/span>60<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$datay2<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span>12<span class=\"sy0\">,<\/span>9<span class=\"sy0\">,<\/span>12<span class=\"sy0\">,<\/span>8<span class=\"sy0\">,<\/span>41<span class=\"sy0\">,<\/span>15<span class=\"sy0\">,<\/span>30<span class=\"sy0\">,<\/span>8<span class=\"sy0\">,<\/span>48<span class=\"sy0\">,<\/span>36<span class=\"sy0\">,<\/span>14<span class=\"sy0\">,<\/span>25<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$datay3<\/span> <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span>5<span class=\"sy0\">,<\/span>17<span class=\"sy0\">,<\/span>32<span class=\"sy0\">,<\/span>24<span class=\"sy0\">,<\/span>4<span class=\"sy0\">,<\/span>2<span class=\"sy0\">,<\/span>36<span class=\"sy0\">,<\/span>2<span class=\"sy0\">,<\/span>9<span class=\"sy0\">,<\/span>24<span class=\"sy0\">,<\/span>21<span class=\"sy0\">,<\/span>23<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"co1\">\/\/ Setup the graph<\/span>\n<span class=\"re0\">$graph<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">new<\/span> Graph<span class=\"br0\">&#40;<\/span>900<span class=\"sy0\">,<\/span>350<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">SetScale<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;textlin&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"re0\">$theme_class<\/span><span class=\"sy0\">=<\/span><span class=\"kw2\">new<\/span> UniversalTheme<span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">SetTheme<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$theme_class<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">img<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">SetAntiAliasing<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw4\">false<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">title<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">Set<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Evolucion de pedidos'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">SetBox<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw4\">false<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">img<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">SetAntiAliasing<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">yaxis<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">HideZeroLabel<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">yaxis<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">HideLine<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw4\">false<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">yaxis<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">HideTicks<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw4\">false<\/span><span class=\"sy0\">,<\/span><span class=\"kw4\">false<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">xgrid<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">Show<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">xgrid<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">SetLineStyle<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;solid&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">xaxis<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">SetTickLabels<\/span><span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Ene'<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'Feb'<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'Mar'<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'Abr'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'May'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'Jun'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'Jul'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'Ago'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'Sep'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'Nov'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'Oct'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'Dic'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">xgrid<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">SetColor<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'#E3E3E3'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"co1\">\/\/ Create the first line<\/span>\n<span class=\"re0\">$p1<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">new<\/span> LinePlot<span class=\"br0\">&#40;<\/span><span class=\"re0\">$datay1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">Add<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$p1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$p1<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">SetColor<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;#6495ED&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$p1<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">SetLegend<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Tienda 1'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"co1\">\/\/ Create the second line<\/span>\n<span class=\"re0\">$p2<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">new<\/span> LinePlot<span class=\"br0\">&#40;<\/span><span class=\"re0\">$datay2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">Add<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$p2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$p2<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">SetColor<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;#B22222&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$p2<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">SetLegend<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Tienda 2'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"co1\">\/\/ Create the third line<\/span>\n<span class=\"re0\">$p3<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">new<\/span> LinePlot<span class=\"br0\">&#40;<\/span><span class=\"re0\">$datay3<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">Add<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$p3<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$p3<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">SetColor<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;#FF1493&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"re0\">$p3<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">SetLegend<\/span><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Tienda 3'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">legend<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">SetFrameWeight<\/span><span class=\"br0\">&#40;<\/span>1<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">legend<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">SetPos<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu19\">0.5<\/span><span class=\"sy0\">,<\/span><span class=\"nu19\">0.98<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'center'<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'bottom'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"co1\">\/\/ Output line<\/span>\n<span class=\"re0\">$graph<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">Stroke<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"sy1\">?&gt;<\/span><\/pre><\/div><\/div>\n<p><strong>JpGraph<\/strong> es una herramienta muy potente para la generaci\u00f3n de gr\u00e1ficos en nuestras p\u00e1ginas Web. Es una librer\u00eda totalmente gratuita (para uso no comercial), de f\u00e1cil instalaci\u00f3n y manejo. Incluye una completa documentaci\u00f3n con multitud de ejemplos de los distintos gr\u00e1ficos que se pueden generar. Adem\u00e1s de generar diversos tipos de gr\u00e1ficos, permite personalizar casi todo lo que se ve, resultando esto muy \u00fatil para integrar perfectamente el gr\u00e1fico con el aspecto de nuestra Web.<\/p>\n<p>Si hay que poner inconvenientes a este sistema que permite crear gr\u00e1ficas de forma din\u00e1mica con <strong>PHP<\/strong> ser\u00edan los siguientes:<\/p>\n<ul>\n<li>El paquete de instalaci\u00f3n es muy pesado. Pesa m\u00e1s de 12 MB.<\/li>\n<li>Las gr\u00e1ficas no se adaptan a todos los dispositivos. No es responsive.<\/li>\n<li>Si no tienes conocimientos de <strong>PHP<\/strong> o programaci\u00f3n orientada a objetos, el c\u00f3digo no lo vas a entender bien.<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><a class=\"btn btn-secondary\" title=\"Ver ejemplo en funcionamiento\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/php\/jpgraph\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"fa fa-eye\"><\/i> Ver demo<\/a> <a class=\"btn btn-primary\" title=\"Descargar JpGraph\" href=\"https:\/\/jpgraph.net\/download\/\"><i class=\"fa fa-download\"><\/i> Descargar<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>JpGraph es una librer\u00eda PHP para crear gr\u00e1ficas din\u00e1micas con PHP. Una librer\u00eda muy avanzada que permite crear distintos tipos de gr\u00e1ficas.<\/p>\n","protected":false},"author":1,"featured_media":7319,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[101],"class_list":["post-6272","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php","tag-graficas"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JpGraph - Creaci\u00f3n de gr\u00e1ficas din\u00e1micas con PHP - Jose Aguilar Blog<\/title>\n<meta name=\"description\" content=\"JpGraph es una librer\u00eda PHP para crear gr\u00e1ficas din\u00e1micas con PHP. Una librer\u00eda muy avanzada que permite crear distintos tipos de gr\u00e1ficas.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JpGraph - Creaci\u00f3n de gr\u00e1ficas din\u00e1micas con PHP - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"JpGraph es una librer\u00eda PHP para crear gr\u00e1ficas din\u00e1micas con PHP. Una librer\u00eda muy avanzada que permite crear distintos tipos de gr\u00e1ficas.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Jose Aguilar Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/joseaguilarblog\" \/>\n<meta property=\"article:published_time\" content=\"2014-04-10T13:15:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-06-03T09:35:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/04\/jpgraph-creacion-graficas-dinamicas-php.png\" \/>\n\t<meta property=\"og:image:width\" content=\"250\" \/>\n\t<meta property=\"og:image:height\" content=\"250\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jose Aguilar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:site\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jose Aguilar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/\",\"name\":\"JpGraph - Creaci\u00f3n de gr\u00e1ficas din\u00e1micas con PHP - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/04\/jpgraph-creacion-graficas-dinamicas-php.png\",\"datePublished\":\"2014-04-10T13:15:40+00:00\",\"dateModified\":\"2019-06-03T09:35:53+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"description\":\"JpGraph es una librer\u00eda PHP para crear gr\u00e1ficas din\u00e1micas con PHP. Una librer\u00eda muy avanzada que permite crear distintos tipos de gr\u00e1ficas.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/04\/jpgraph-creacion-graficas-dinamicas-php.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/04\/jpgraph-creacion-graficas-dinamicas-php.png\",\"width\":250,\"height\":250},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JpGraph &#8211; Creaci\u00f3n de gr\u00e1ficas din\u00e1micas con PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/\",\"name\":\"Jose Aguilar Blog\",\"description\":\"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\",\"name\":\"Jose Aguilar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"caption\":\"Jose Aguilar\"},\"description\":\"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.\",\"sameAs\":[\"https:\/\/plus.google.com\/114357189801512615537\"],\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JpGraph - Creaci\u00f3n de gr\u00e1ficas din\u00e1micas con PHP - Jose Aguilar Blog","description":"JpGraph es una librer\u00eda PHP para crear gr\u00e1ficas din\u00e1micas con PHP. Una librer\u00eda muy avanzada que permite crear distintos tipos de gr\u00e1ficas.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"JpGraph - Creaci\u00f3n de gr\u00e1ficas din\u00e1micas con PHP - Jose Aguilar Blog","og_description":"JpGraph es una librer\u00eda PHP para crear gr\u00e1ficas din\u00e1micas con PHP. Una librer\u00eda muy avanzada que permite crear distintos tipos de gr\u00e1ficas.","og_url":"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2014-04-10T13:15:40+00:00","article_modified_time":"2019-06-03T09:35:53+00:00","og_image":[{"width":250,"height":250,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/04\/jpgraph-creacion-graficas-dinamicas-php.png","type":"image\/png"}],"author":"Jose Aguilar","twitter_card":"summary_large_image","twitter_creator":"@JoseAguilarBlog","twitter_site":"@JoseAguilarBlog","twitter_misc":{"Escrito por":"Jose Aguilar","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/","url":"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/","name":"JpGraph - Creaci\u00f3n de gr\u00e1ficas din\u00e1micas con PHP - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/04\/jpgraph-creacion-graficas-dinamicas-php.png","datePublished":"2014-04-10T13:15:40+00:00","dateModified":"2019-06-03T09:35:53+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"description":"JpGraph es una librer\u00eda PHP para crear gr\u00e1ficas din\u00e1micas con PHP. Una librer\u00eda muy avanzada que permite crear distintos tipos de gr\u00e1ficas.","breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/04\/jpgraph-creacion-graficas-dinamicas-php.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/04\/jpgraph-creacion-graficas-dinamicas-php.png","width":250,"height":250},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/jpgraph-creacion-graficas-dinamicas-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"JpGraph &#8211; Creaci\u00f3n de gr\u00e1ficas din\u00e1micas con PHP"}]},{"@type":"WebSite","@id":"https:\/\/www.jose-aguilar.com\/blog\/#website","url":"https:\/\/www.jose-aguilar.com\/blog\/","name":"Jose Aguilar Blog","description":"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11","name":"Jose Aguilar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","caption":"Jose Aguilar"},"description":"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.","sameAs":["https:\/\/plus.google.com\/114357189801512615537"],"url":"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/6272","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/comments?post=6272"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/6272\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/7319"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=6272"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=6272"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=6272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}