Solved

# Find the x for y in chart

Posted on 2006-07-05
237 Views
Hi.

If i know the y value how can i find the x value and vice versa?

Example for (Chart1.SeriesList.Series[0].MaxYValue) how can i find the x ?
0
Question by:CodedK
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 3
• 2

LVL 26

Expert Comment

ID: 17044411

The MaxYValue property returns the largest Y value in the chart series, it does not return you the index of the data point (which would be needed in order to get the corresponding X value). You could walk the series YValues[index] until you found the yvalue that = MaxYValue, which would then give you the index, but if there are 2 data points where the YValue = MaxYValue, then you would not be able to determine what data point you needed to get. Eg, given the 6 sample data points in the format of index = (x, y)

0 = (1, 5)
1 = (2, 7)
2 = (10, 20)
3 = (11, 14)
4 = (15, 12)
5 = (8, 20)

The series MaxYValue would return 20. But because there are 2 data points with Y=20, you would be unable to determine if the corresponding X value was supposed to be 10 or 8. So, only if EVERY y value and EVERY x value is unique, will you be able to do what you are asking.

Russell

0

LVL 16

Author Comment

ID: 17044463
Thank you Russell.

But how can find the x. Given that y is unique.
Can you tell me the commands?
0

LVL 26

Accepted Solution

Russell Libby earned 125 total points
ID: 17044604
Assuming that the x values and y values are unique, the following functions could be used against a given chart series.

Russell

---

function FindXForY(YValue: Double; Series: TChartSeries): Double;
var  dwIndex:       Integer;
begin

// Set default result
result:=0;

// Find the index of the y value
for dwIndex:=0 to Pred(Series.YValues.Count) do
begin
if (Series.YValue[dwIndex] = YValue) then
begin
// Return the x value
result:=Series.XValue[dwIndex];
// Done
break;
end;
end;

end;

function FindYForX(XValue: Double; Series: TChartSeries): Double;
var  dwIndex:       Integer;
begin

// Set default result
result:=0;

// Find the index of the y value
for dwIndex:=0 to Pred(Series.XValues.Count) do
begin
if (Series.XValue[dwIndex] = XValue) then
begin
// Return the y value
result:=Series.YValue[dwIndex];
// Done
break;
end;
end;

end;

0

LVL 16

Author Comment

ID: 17044749
Thank you very much Russell :)
0

LVL 26

Expert Comment

ID: 17045244
No problem,
Russell
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
This is a high-level webinar that covers the history of enterprise open source database use. It addresses both the advantages companies see in using open source database technologies, as well as the fears and reservations they might have. In this…
In this video, viewers are given an introduction to using the Windows 10 Snipping Tool, how to quickly locate it when it's needed and also how make it always available with a single click of a mouse button, by pinning it to the Desktop Task Bar. Int…
###### Suggested Courses
Course of the Month5 days, 3 hours left to enroll