Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-04-2016
sowei sowei is offline
Miembro
 
Registrado: abr 2010
Posts: 21
Poder: 0
sowei Va por buen camino
Series con distinta escala con TChart

Hola a todos
No sé si me sabré explicar bien, per lo voy a intentar:

Lo que quiero es mostrar en un TChart dos o más series y que cada una de estas tenga una escala (eje Y) diferente a las demás. La cuestión es que no sé si se puede hacer.

Para poner un ejemplo, la serie 1 muestra los importes de ventas de los diferentes meses. Esto me crea 12 barras con diferentes alturas según el importe de cada mes. Vamos a suponer que el importe mínimo es ZERO y el máximo es 10000 (diez mil). Las barras tendrán la altura conforme a los importes que rondarán entre 0 y 10000.

La serie 2, que también son barras, muestra la cantidad de ventas realizadas en cada mes, por ejemplo cantidad de facturas. Vamos a suponer que se hacen entre 0 y 100 facturas por mes.

Con esto tenemos que en el eje X mostraremos los meses, enero, febrero, marzo, ...

Pero en el eje Y tenemos DOS ESCALAS DIFERENTES. La que va de 0 a 10.000 y la que va de 0 100

(Los valores del eje Y los escondo, no es necesario que se vean. Ya me vale con mostrar sólo la etiqueta encima de cada barra con su valor)

En este ejemplo pretendo mostrar dos barras en cada mes. La de la izquierda hace referencia a la serie 1 (ventas) y la de la derecha a la serie 2 (cantidad facturas).
Por ejemplo en enero se han hecho 5.000 € de venta y 60 facturas.

El problema que me encuentro es que la serie 2 utiliza la escala de la serie 1 y muestra unas barras muy pequeñas, al utilizar el rango 0 - 10.000 en lugar de 0 - 100.

Lo que quiero poder hacer es que cada serie utilice su escala (su mínimo y su máximo), como si fueran dos gráficas diferentes pero en un mismo escenario.


Estooooo ... me he explicado bien ?


Me haríais muuuuy feliz si me ayudáis a resolverlo.
Y como no, tanto si lo sabéis como si no, muchísimas gracias

Saludos
Responder Con Cita
  #2  
Antiguo 18-04-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Puedes multiplicar por 100 la segunda escala, así tendrías también de cero a 10000.
Responder Con Cita
  #3  
Antiguo 18-04-2016
Avatar de kapcomx
kapcomx kapcomx is offline
Miembro
 
Registrado: jun 2007
Ubicación: Puebla México
Posts: 350
Poder: 18
kapcomx Va por buen camino
acabo de hacer algo asi, lo que hago es definir por codigo el valores de los axis.left y axis.right.
a grandez rasgos tengo en una tabla llamada anualdonde tengo tres columnas productos activados, pagados y comision. adicionalmente el campo fk_cliente, anho, tipo_prod y otros...

dentro del formulario escogo el cliente, el tipo de producto y el año con eso hago una consulta. esa consulta la ingreso en un data set
"dm.dsanual", uso este data set para ligarlo al dbchart.

a grandez rasgos hago esto

1. hago la consulta en base al cliente y los otros datos (dm.dsanual) los ordeno de menor a mayor
2. defino primero los valores del axis de la izquierda:
Código Delphi [-]


//aca defino el maximo
dm.mydataset.last;
dbchart1.axes.left.maximuim := ((dm.dsanualactivos.asinteger) * 1.30 ); //el 1.30 es para tener un margen y la grafica no se desborde
maximoleft := dm.dsanualactivos.asinteger;

//aca defino el mimino
dm.mydataset.first;
dbchart1.axes.left.minimum := 0; 
minimoleft := 0;


convesion:=0; //esta variable la ocupo para hacer la conversion de los valores de la derecha 

dm.mydataset.first;

mayor := dm.mydatasetcomision.value;

while not (dm.mydataset.oef) do 
begin 

if (dm.mydatasetcomision.value > valor) then 
  begin 
     mayor := dm.dsanualcomision.value;
     conversion:= mayor / dm.dsanualactivos.value;   //esto lo hago para dividir la mayor cantidad pagada entre el numero de equipos activados.
   end;


dm.dsanual.next;
end;

//hago una especie de factor de escala

conversion := conversion * 0.8;

factor := round (conversion);


if factor:= 0 then 
factor:= 1;

//aca defino las rotulos de la derecha

dbchart1.axes.right.maximum := ((maximo_left * factor) * 1.30);
dbchart1.axes.right.minimum := (1 * factor);
dbchart1.axes.right.visible:= true;


//aca hago un update de la tabla dondce cambio el campo factor 

dm.cambia(dm.ds1, 'update anual set factor = (comision /'+floattostr(factor) + ')'); //cambia es un procedimiento donde atrapo el data set y ejecuto la consulta enviada....

// refresco la consulta de la tabla anual 
dm.filtra(dm.dsanual, dm.con_anual + ' fk_cliente= ' + inttostr(dblckclientes.keyvalue)); //filtra es un procedimiento que uso para hacer consultas

//una vez actualizado mando llamar el grafico
dbchart1.visible:= true;



con ese codigo puedo generar el grafico con dos factores diferentes la izquierda el numero de productos comprados, activados y a la derecha el total en $$$ de sus comisiones generadas.

Espero te pueda servir mi ejemplo..


Saludos...
__________________
un tipo al cual la sociedad no le tiene el mas mínimo respeto no puede ser presidente....
Responder Con Cita
  #4  
Antiguo 19-04-2016
sowei sowei is offline
Miembro
 
Registrado: abr 2010
Posts: 21
Poder: 0
sowei Va por buen camino
Gracias por las respuestas.

Provaré
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Tchart Gannt y enumeracion de series mjjj Gráficos 0 16-01-2015 22:45:11
Escala de gráficos tchart guitarrahugo Varios 5 01-06-2012 01:42:06
Ayuda con las series Danielle Gráficos 0 27-10-2006 18:41:54
Limpiar series de un Grafico ( TChart ) josem Gráficos 3 23-10-2005 04:06:50


La franja horaria es GMT +2. Ahora son las 01:07:19.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi