2011-08-26 3 views
3

J'ai un MSChart qui ressemble à ceci.Marquage de xaxis personnalisé MSChart

http://11.a.hostable.me/images/june2007.JPG

Ce que je voudrais faire est d'ajuster les étiquettes de l'axe x:

  • Je veux étiqueter chaque colonne, tous les 5
  • Je veux préciser ce que chaque étiquette est.

Ce que je ne comprends pas, est quand je l'ai sur la vue « toutes les années » (comme on le voit ci-dessous), le numéro I désigner comme XValue utilisant

oDataPoint_PV.SetValueXY (année, Vues

fait que l'année que je spécifie apparaît comme l'étiquette, mais pour une raison quelconque dans la vue Mois, elle commence à 1 au lieu de la première valeur que j'ai définie, qui est 13 pour cet exemple.

oDataPoint_PV.SetValueXY (Jour, Vues)

Dans le tableau pour Juin 2007, il devrait commencer à 13 ans, et aller au 12 juillet.

http://11.a.hostable.me/images/years.JPG

Répondre

17

Pour répondre à votre première question: « Je veux étiqueter chaque colonne, tous les 5 » Vous pouvez spécifier à quelle fréquence l'étiquette est affichée en utilisant la propriété d'intervalle.

chart1.ChartAreas[0].AxisX.Interval = [desired interval]; 

ou pour définir l'intervalle juste pour les étiquettes utilisent:

chart1.ChartAreas[0].AxisX.LabelStyle.Interval = [desired interval]; 

Si je suis la fin de votre question où vous ne voulez pas que votre carte pour commencer à zéro, vous pouvez utiliser un offset d'étiquette.

chart1.ChartAreas[0].AxisX.LabelStyle.Offset = 1; 

Ceci omettra la première étiquette que vous mentionnez est zéro.

Le deuxième objectif « Je veux préciser ce que chaque étiquette » peut être résolu de plusieurs manières

Une méthode consiste à afficher la valeur (x ou y) sur l'axe (x ou y), que je croyez est la méthode utilisée en fonction des informations que vous fournissez dans votre question

Une autre façon est de mettre l'étiquette de l'axe manuellement pour chaque point de données

chart1.Series[0].Points[0].AxisLabel = "your label" 

vous pouvez également ajouter les informations d'étiquette lorsque vous ajoutez points de données

chart1.Series[0].Points.Add(new DataPoint(4, 4) { AxisLabel = "your label" }); 

Enfin, vous pouvez microgestion vos étiquettes en utilisant des étiquettes personnalisées, mais cela peut être plus compliqué, et en fonction de ce que vous avez saisi ne probablement pas besoin d'utiliser ceux donc je ne vais pas en eux.

De même, définissez-vous votre valeur x en utilisant une chaîne ou un objet DateTime?
Quelque chose comme ceci:

Chart1.Series[0].XValueType = ChartValueType.DateTime; 
System.DateTime x = new System.DateTime(2008, 11, 21); 
Chart1.Series[0].Points.AddXY(x.ToOADate(), 34); 

Si oui, lorsque vous travaillez avec des étiquettes de date et heure, objets de la carte Microsoft ont des fonctionnalités supplémentaires que vous pouvez définir pour manipuler la façon dont il affiche. Voici quelques informations supplémentaires que vous pourriez trouver utiles.

http://msdn.microsoft.com/en-us/library/dd456614.aspx

Vous pouvez alors utiliser des propriétés telles que celles-ci (et je suis sûr que plus, mais je ne travaille pas souvent avec des dates)

chart1.ChartAreas[0].AxisX.LabelStyle.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Days; 
chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Days; 

Si je ne l'ai pas bien répondu à vos questions en raison à un malentendu, s'il vous plaît laissez-moi savoir et réviser votre question pour me guider dans la bonne direction

(Exemples de code avec des données réelles que vous utilisez pour générer les parcelles, avec des images résultantes + ce que vous voulez faire à la place de ce qui est afficher ed dans l'image est utile - vous en avez une partie mais elle est incomplète)

Bonne chance!

0

Je trouve que si vous ne convertissez pas vos dates pour String s pour les étiquettes, l'intervalle de décalage peut être un problème:

String("MM-dd") plutôt que DateTime

chart.ChartAreas[0].AxisX.Interval = 1;