Ho un istogramma con più serie contenenti ciascuna più punti. Attualmente le colonne si toccano l'una con l'altra. Voglio forzare uno spazio tra ogni colonna. Come posso raggiungere questo obiettivo?Forza uno spazio tra i punti sull'asse x (MS .Net Chart Controls, Column Chart)
Ho trovato che l'applicazione di un Punto di larghezza (Chart1.Series[seriesName]["PointWidth"] = (0.6).ToString();
) mi dà una separazione tra i gruppi di valori x, ma non tra ogni punto di serie in un singolo gruppo (che ho bisogno). L'utilizzo di una serie di spaziatori vuoti come suggested elsewhere non risolve il problema.
Sto usando .Net 4, VS 2010 Web Application. Segue il mio codice grafico:
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));
}
}
}
completamente estranei alla tua richiesta, ma come nel diavolo si fa arrotondare gli angoli sui vostri grafici? – spaceman
Chart1.BorderSkin.SkinStyle = BorderSkinStyle.Emboss; – grenade