82 messaggi dal 22 luglio 2011
www.wincode.it
Salve a tutti,
eccomi di nuovo qui ad affrontare un'altra problematica
Vado subito al sodo. Posseggo un controllo Chart, in particolare faccio uso di un istogramma per presentare alcune statistiche. Sull'asse delle X vengono rappresentati i dati, sull'asse delle Y dovrei mostrare il numero che indica quante volte i dati sono replcati.
Mi spiego meglio e in poche parole. Se sull'asse delle X sono presenti 2 (o più numeri uguali) essi, devono incrementare fino a 2(o più).
Allego un'immagine per rendere meglio l'idea:

http://i41.tinypic.com/30hws1z.png

Sono disponibile per eventuali chiarimenti in merito alla mia problematica (dato che mi sono espresso malissimo  )

Grazie in anticipo.

http://www.wincode.it - CEO & Founder
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
penso che tu debba semplicemente raggruppare il tuo array di valori prima di passarlo al grafico. Ipotizziamo che tu abbia un array di questo tipo, dove i numeri 2 e 3 sono ripetuti più volte.
var dati = new int[]{ 1, 2, 2, 3, 2, 3 };


Basta fare un raggruppamento con il metodo GroupBy per ottenere valori distinti e, per ciascuno, il numero di occorrenze trovate.
var gruppi = dati.GroupBy(i=>i);

La variabile "gruppi" conterrà un elenco in cui ogni elemento possiede una proprietà "Key", cioè il valore da stampare sull'asse X, e un metodo Count() che restituisce il numero di occorrenze da stampare sull'asse Y del grafico. Ora trasformiamo questo elenco in qualcosa di consumabile dal grafico, come un elenco di tuple.
Chart1.DataSource = gruppi.Select(gruppo => new Tuple<int, int>(gruppo.Key, gruppo.Count()));
Chart1.DataBind();


L'importante è che la serie del grafico sia configurata come segue:
<asp:Series Name="Series1" XValueMember="Item1" YValueMembers="Item2">
</asp:Series>

Perché Item1 e Item2 sono le proprietà dell'oggetto Tuple in cui abbiamo inserito, rispettivamente, il valore chiave e il conto.

ciao,
Moreno
Modificato da BrightSoul il 25 novembre 2013 17.59 -

Enjoy learning and just keep making
82 messaggi dal 22 luglio 2011
www.wincode.it
Ciao Moreno,
grazie per la risposta.
Nel caso in cui dovessi fare il binding sul controllo Chart su Windows Forms, quali proprietà devo prendere in considerazione?

http://www.wincode.it - CEO & Founder
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
anche su Winforms le proprietà sono le stesse: XValueMember e YValueMembers, le trovi dentro l'oggetto Serie.

Chart1.Series[0].XValueMember = "Item1";
Chart1.Series[0].YValueMembers = "Item2";


ciao,
Moreno

Enjoy learning and just keep making
1.422 messaggi dal 27 dicembre 2005
.Series[0] sta per ogni linea sul grafico ?
11.886 messaggi dal 09 febbraio 2002
Contributi
totti240282 ha scritto:

.Series[0] sta per ogni linea sul grafico ?

Non una linea ma una serie di linee.
Immagino che Best abbia una sola serie (i cui valori rappresentano i conteggi delle occorrenze) e otterrà un grafico come questo.

I grafici possono contenere più di una serie. Ad esempio questo ne contiene due e sono riepilogate a lato, in una legenda. Anche questo ne contiene due ma la seconda è rappresentata come linea anziché come barre, quindi è possibile mischiare tipi diversi di rappresentazione nella stessa area del grafico.

Se Best volesse aggiungere una seconda serie, anche per quella dovrebbe indicare il nome della proprietà da cui verrebbero letti i valori.
Chart1.Series[1].XValueMember = "Item1";
Chart1.Series[1].YValueMembers = "Item3"; //Un ipotetico terzo valore nella tupla

Comunque questa configurazione può essere fatta anche in modalità design, dal pannello delle proprietà del grafico. Si accede da un'apposita proprietà "Series".
Modificato da BrightSoul il 27 novembre 2013 15.36 -

Enjoy learning and just keep making
1.422 messaggi dal 27 dicembre 2005
Visto che ci siamo in MVC come genero grafici ?
11.886 messaggi dal 09 febbraio 2002
Contributi
Esistono varie librerie javascript che sono in grado di disegnare il grafico lato client, su una canvas o con svg. Il vantaggio di questo tipo di grafici è che sono spesso animati e interattivi, quindi l'utente può poggiare il mouse su un elemento del grafico per avere informazioni aggiuntive o modificare i parametri di visualizzazione (es. range di validità, livello di zoom).

Te ne linko alcuni gratuiti ma cercane anche tu perché ne esistono vari e con funzionalità diverse. In tutti i casi la modalità di utilizzo sarà più o meno la stessa: dovrai invocare qualche funzione javavascript per passare al grafico i valori da rappresentare. Essi saranno nella forma di un oggetto o array javascript che magari hai ottenuto da una richiesta ajax.

http://www.chartjs.org/
http://www.highcharts.com/
http://www.flotcharts.org/ (articolo di Daniele)
http://raphaeljs.com/ (per il disegno vettoriale in genere)

Se non ti interessa questo genere di interattività, puoi leggere questo articolo:
http://weblogs.asp.net/imranbaloch/archive/2011/03/21/chart-helper-in-asp-net-mvc-3-0-with-transparent-background.aspx
ciao,
Moreno
Modificato da BrightSoul il 27 novembre 2013 15.58 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.