Я разрабатываю симулятор на основе Excel, который запускает конкретный тест 1000 раз. Результатом каждого теста является две координаты. Эти координаты записываются в диапазон. Затем я создаю граф X-Y Scatter на основе этого диапазона.Как изменить цвет точки на графе рассеяния в VBA/Excel как функцию координат X, Y самой точки?
Теперь я хочу выполнить цикл каждой из 1000 точек графика и изменить цвет этой точки на основе координаты X и Y точки. В частности, я хочу взять X Mod (Half Max X) и Y Mod (Half Max Y), чтобы создать эффект, который интенсивность цвета будет возрастать как точки вблизи середины графика.
код я хочу использовать следующим образом:
Temp = "'" + FirstCalcs.Name + "'!" + FirstCalcs.Cells(SOWD + 3, 2).Address + ":" + FirstCalcs.Cells(SOWD + 3, NumOfTests + 1).Address
Temp2 = "'" + FirstCalcs.Name + "'!" + FirstCalcs.Cells(SOWD + 4, 2).Address + ":" + FirstCalcs.Cells(SOWD + 4, NumOfTests + 1).Address
Set chtChart = Charts.Add
With chtChart
Do Until .SeriesCollection.Count = 1 ' remove extra series, which Excel spawns like rabbits, for some reason
.SeriesCollection(1).Delete
Loop
.Name = Institution + " summary"
.ChartType = xlXYScatter
'Link to the source data range.
'.SetSourceData Source:=FirstCalcs.Range(Temp)
.SeriesCollection(1).Values = Temp2
.SeriesCollection(1).XValues = Temp
For Each pts In .SeriesCollection(1).Points
.Format.Fill.Solid
'The next line is what I can't figure out
.MarkerBackgroundColor = RGB(XFunctionOf(.pts.XCoor), YFunctionOf(.pts.YCoor), 128)
.MarkerStyle = xlMarkerStyleDiamond
.MarkerSize = 10
End With
Next i
.HasTitle = True
.ChartTitle.Text = "Summary"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "T"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Time before T achieved"
.HasLegend = False
End With
Однако я не могу разработать способ получить Х и Y значение для выполнения требуемой функции на них. Я могу варьировать цвет в соответствии с количеством самой точки (от 1 до 1000), но это не то, что я хочу сделать - цвет является функцией координаты X, Y каждой точки. Стоит сказать, что диапазоны координат X и Y являются переменными, т. Е. Тест не возвращает результаты, которые имеют одинаковый масштаб каждый раз.
Любая помощь будет чрезвычайно оценена и благодарна вам заранее.
Спасибо за это, Тим. Позвольте мне сыграть и посмотреть, смогу ли я сделать эту работу. В одночасье я также использовал возможность включения Datalabels, извлечение текста и разбиение его (не элегантный, я понимаю), однако я еще не понял, как включить ярлыки X и Y. Я буду первым (кажется, проще). Я отправлю свое решение, как только я его заработаю. Еще раз спасибо, Марк. – user2723257
Работал отлично, и, используя http://www.mcpher.com/Home/excelquirks/snippets/heatmap, у меня есть отличный результат. – user2723257