Dans Excel, vous ne pouvez pas le faire en quelques étapes simples. Les seules options que vous avez dans Excel sont de changer la couleur de chaque colonne manuellement ou de varier la couleur par point comme vous pouvez le voir here. Je pense que par le code VBA vous pouvez y arriver.
Je recommanderais l'utilisation de Microsoft ASP.NET built-in chart control. Cela vous donnera beaucoup de possibilités de personnalisation. Je vais essayer de poster un échantillon de travail.
Edit:
juste réussi à obtenir un échantillon de travail:
Voici le code de la page ASPX:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %>
<%@ Register assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" namespace="System.Web.UI.DataVisualization.Charting" tagprefix="asp" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:Chart ID="Chart1" runat="server" Width="300px">
<Series>
<asp:Series Name="Series1" ChartArea="ChartArea1" MarkerSize="1">
<Points>
<asp:DataPoint XValue="1" YValues="1" />
<asp:DataPoint XValue="2" YValues="2" />
<asp:DataPoint XValue="3" YValues="3" />
<asp:DataPoint XValue="4" YValues="3" />
<asp:DataPoint XValue="5" YValues="2" />
</Points>
</asp:Series>
</Series>
<ChartAreas>
<asp:ChartArea Name="ChartArea1">
<AxisX Interval = "1"></AxisX>
</asp:ChartArea>
</ChartAreas>
</asp:Chart>
</asp:Content>
Voici le code code-behind I mis en œuvre - pas une preuve de balle parce que il a besoin de plus de tests ...
public partial class _Default : System.Web.UI.Page
{
private static Dictionary<System.Drawing.Color, double> dictionary =
new System.Collections.Generic.Dictionary<System.Drawing.Color, double>();
private Color CreateRandomColor()
{
Random randonGen = new Random();
Color randomColor = Color.FromArgb(randonGen.Next(255), randonGen.Next(255), randonGen.Next(255));
return randomColor;
}
protected void Page_Load(object sender, EventArgs e)
{
FormatChart();
}
private bool IsColorUsed(Color color)
{
return dictionary.Any(kvp => kvp.Key == color);
}
private void FormatChart()
{
foreach (var point in Chart1.Series[0].Points)
{
// Point with same Y value already exist?
var sameYValue = dictionary.Any(kvp => kvp.Value == point.YValues.First());
if (sameYValue)
{
//Getting the Y point...
var yValue = dictionary.FirstOrDefault(kvp => kvp.Value == point.YValues.First());
// Applying same color...
point.Color = yValue.Key;
}
else // Different Y value
{
Color color = CreateRandomColor();
// Getting a new Color that isn't used yet...
while (IsColorUsed(color))
{
color = CreateRandomColor();
}
point.Color = color;
dictionary.Add(color, point.XValue);
}
}
}
}
Ceci est le diagramme résultant:
alt text http://www.freeimagehosting.net/uploads/22d240b0e0.png
Pourquoi voulez-vous un graphique à barres si « Toutes les barres doivent être de la même hauteur. » ?? –