Hi Team,
We are using Aspose cells for .NET.
How to change a color of bar in bar chart based on it’s X value?
Can you please help us on this?
Hi Team,
We are using Aspose cells for .NET.
How to change a color of bar in bar chart based on it’s X value?
Can you please help us on this?
Hi,
Thanks for your query.
Well, you may apply the fill color of bars using its relevant chart point/ data series in the Bar chart. See the sample code for your reference. The sample is only for demonstration purpose. Please refer to it and you got to write your own code based on your specific data and condition:
e.g
Sample code:
Workbook workbook = new Workbook();
//Change color palette a bit.
workbook.ChangePalette(Color.Orange, 53);
workbook.ChangePalette(Color.LightBlue, 54);
workbook.ChangePalette(Color.LightCoral, 55);
//Get the colors in the Workbook palette
Color[] colors = workbook.Colors;
//Set default font
Style style = workbook.DefaultStyle;
style.Font.Name = "Tahoma";
workbook.DefaultStyle = style;
Cells cells = workbook.Worksheets[0].Cells;
//Put a string into a cell
cells["A1"].PutValue("Region");
cells["A2"].PutValue("France");
cells["A3"].PutValue("Germany");
cells["A4"].PutValue("England");
cells["B1"].PutValue("Marketing Costs");
cells["B2"].PutValue(7000000);
cells["B3"].PutValue(5500000);
cells["B4"].PutValue(3000000);
Worksheet sheet = workbook.Worksheets[0];
sheet.IsGridlinesVisible = false;
Worksheet sheet1 = workbook.Worksheets[workbook.Worksheets.Add(SheetType.Worksheet)];
//Create chart
int chartIndex = sheet1.Charts.Add(ChartType.Bar, 5, 1, 29, 10);
Chart chart = sheet1.Charts[chartIndex];
//Add the nseries collection to a chart
chart.NSeries.Add("Sheet1!B2:B4", true);
//Get or set the range of category axis values
chart.NSeries.CategoryData = "Sheet1!A2:A4";
chart.NSeries.IsColorVaried = true;
chart.NSeries[0].DataLabels.ShowValue = true;
chart.NSeries[0].Line.Color = Color.Red;
chart.NSeries[0].Line.Style = LineType.Solid;
chart.NSeries[0].Line.Weight = WeightType.MediumLine;
//Chnage bar fill color for each point
for (int i = 0; i < chart.NSeries[0].Points.Count; i++)
{
chart.NSeries[0].Points[i].Area.ForegroundColor = colors[53 + i];
}
//Set properties of chart
chart.ChartArea.Border.IsVisible = false;
chart.ChartArea.Area.ForegroundColor = Color.Transparent;
//Set the legend position type
chart.Legend.Position = LegendPositionType.Top;
chart.GapWidth = int.Parse("100");
//Set properties of chart title
chart.Title.Text = "Marketing Costs by Region";
chart.Title.TextFont.IsBold = true;
chart.Title.TextFont.Color = Color.Black;
chart.Title.TextFont.Size = 12;
//Set properties of categoryaxis title
chart.CategoryAxis.Title.Text = "Region";
chart.CategoryAxis.Title.TextFont.Color = Color.Black;
chart.CategoryAxis.TickLabels.RotationAngle = 0;
//Set properties of valueaxis title
chart.ValueAxis.Title.Text = "In Thousands";
chart.ValueAxis.Title.TextFont.Name = "Arial";
chart.ValueAxis.Title.TextFont.Color = Color.Black;
chart.ValueAxis.Title.TextFont.IsBold = true;
chart.ValueAxis.Title.TextFont.Size = 10;
chart.ValueAxis.Title.RotationAngle = 90;
chart.ValueAxis.MajorUnit = double.Parse("20000");
chart.ValueAxis.MaxValue = double.Parse("80000");
chart.ValueAxis.MinorUnit = double.Parse("5000");
chart.ValueAxis.MinValue = double.Parse("0");
workbook.Save(“e:\test2\out1.xlsx”)
Hope, this helps a bit.
Thank you.
Hi
Hi,
Hi
Hi,