La Force d'un écart entre les points sur l'axe des x (MS .Net Des Contrôles De Graphique, Diagramme En Colonnes)
J'ai une colonne de tableau avec plusieurs séries, chacune contenant plusieurs points. Actuellement les colonnes de tous toucher les uns les autres. Je veux forcer un écart entre chaque colonne. Comment puis-je y parvenir?
J'ai trouvé que l'application d'une PointWidth (Chart1.Series[seriesName]["PointWidth"] = (0.6).ToString();
) me donne une séparation entre la valeur de x groupes, mais pas entre chaque série point à un individu du groupe (dont j'ai besoin). À l'aide d'un vide de l'entretoise de la série comme proposé ailleurs ne résout pas le problème.
Je suis à l'aide .Net 4, VS 2010, de l'Application Web. Mon tableau de code suivante:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web.UI;
using System.Web.UI.DataVisualization.Charting;
namespace WebApplication1
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
Chart1.ChartAreas.Add("Default");
Chart1.ChartAreas["Default"].BackColor = Color.White;
Chart1.ChartAreas["Default"].BackSecondaryColor = Color.AliceBlue;
Chart1.ChartAreas["Default"].BackGradientStyle = GradientStyle.TopBottom;
Chart1.BackColor = Color.AliceBlue;
Chart1.BackSecondaryColor = Color.White;
Chart1.BackGradientStyle = GradientStyle.TopBottom;
Chart1.BorderSkin.SkinStyle = BorderSkinStyle.Emboss;
var colors = new List<Color>(GetSystemColors().Where(c=>c.Name.StartsWith("Dark")));
var rng = new Random();
var start = rng.Next(0, colors.Count - 1);
for (var c = start; c < start + 6; c++)
{
var color = colors[c % colors.Count];
Chart1.Series.Add(color.Name);
Chart1.Series[color.Name].BorderColor = color;
Chart1.Series[color.Name].BorderWidth = 1;
Chart1.Series[color.Name].Color = Color.FromArgb((int)(255 * .7), color);
Chart1.Series[color.Name].BackSecondaryColor = Color.White;
Chart1.Series[color.Name].BackGradientStyle = GradientStyle.TopBottom;
for (var year = DateTime.Now.AddYears(-5).Year; year < DateTime.Now.Year; year++)
Chart1.Series[color.Name].Points.Add(new DataPoint(year, rng.Next(0, 20)));
Chart1.Series[color.Name]["PointWidth"] = (0.6).ToString();
//Chart1.Series.Add("Spacer:" + color.Name);
//Chart1.Series["Spacer:" + color.Name]["PointWidth"] = (0.6).ToString();
}
Chart1.Legends.Add("Default");
}
static IEnumerable<Color> GetSystemColors()
{
Type type = typeof(Color);
return type.GetProperties().Where(info => info.PropertyType == type).Select(info => (Color)info.GetValue(null, null));
}
}
}
complètement sans rapport avec votre requête, mais comment diable avez-vous arrondir les angles sur vos graphiques?
Chart1.BorderSkin.SkinStyle = BorderSkinStyle.Estampage;
Chart1.BorderSkin.SkinStyle = BorderSkinStyle.Estampage;
OriginalL'auteur grenade | 2010-01-26
Vous devez vous connecter pour publier un commentaire.
J'ai eu les démons de l'emploi, de reproduire votre situation. Je voulais l'aider parce que je pensais que je pouvais apprendre quelque chose en faisant de la sorte, mais j'ai besoin de votre balisage, ou mieux encore, l'ensemble de la solution! J'ai eu du mal à travers la "Erreur lors de l'exécution enfant demande pour ChartImg.axd" quand j'ai essayé une simple page avec un graphique. J'ai découvert j'ai besoin d'ajouter un gestionnaire dans la config. J'ai ensuite battu par l'échec de chargement du Système d'assemblage.Web.DataVisualization parce que le gestionnaire d'élément que j'ai copié référencé 3,5 DataVisualization assemblée j'ai donc modifié qu'à 4.0, et a finalement vu un graphique. Quel travail QUI a été!
La raison de votre entretoise de la série n'est pas la création d'un écart est parce qu'il n'existe pas de valeurs de la série. Avis les deux dernières lignes de code ci-dessous, qui ajoutent à zéro les valeurs de l'entretoise de la série. Ce produit à l'écart souhaité entre les autres de la série, mais vous trouverez également de l'entretoise de la série répertoriés dans la légende si vous en avez un, ce qui est laid pour dire le moins.
Vous pouvez définir le texte de la légende d'un espace (NB. chaîne vide est ignoré et le texte de la légende n'est pas défini) comme suit, mais la Légende seront toujours ces entretoise de la série.
Si vous êtes chanceux, vous n'aurez pas besoin d'afficher la légende, ou vous pouvez définir l'entretoise de la série de couleurs de la même couleur que la légende d'arrière-plan et le texte de la légende des espaces. Il en résulte un double de l'espacement de regarder dans la Légende qui est susceptible d'être acceptable.
OriginalL'auteur Bernhard Hofmann
vous pouvez contrôler si oui ou non la série s'affiche dans la légende par la définition de la "IsVisibleInLegend" la valeur false
OriginalL'auteur stevieflash42