В Excel вы не можете сделать это с помощью простых шагов. Единственные параметры, которые у вас есть в Excel - это изменить цвет каждого столбца вручную или изменить цвет по точкам, как вы можете видеть здесь . Я думаю, что с помощью VBA кода вы можете туда попасть.
Я бы порекомендовал использовать Microsoft ASP.NET для управления встроенными диаграммами . Это даст вам много возможностей для настройки. Я постараюсь опубликовать рабочий образец.
Edit:
Только что удалось получить рабочий образец:
Это код страницы 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>
Это код с выделенным кодом, который я реализовал, а не пуленепробиваемый, потому что он требует дополнительного тестирования ...
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);
}
}
}
}
Это итоговый график:
альтернативный текст http://www.freeimagehosting.net/uploads/22d240b0e0.png