Which "image" of a country do you mean?
If you are talking about the flags then you can try the attached demo. It has the flag icons of each country in an image list sorted such that the image index corresponds to the x value (I hope I sorted out the order correctly... - the icons are taken from the FatCow icon collection).
Painting of the images is done in the event OnAfterDraw which is called after the entire internal chart has been painted. To make space for the flags I moved the x axis up by increasing the "Margin" of the Chart's BottomAxis to 24. the count of axis labels is given by Chart.BottomAxis.ValueCount, information on the labels can be extracted as Chart.BottomAxis.Value[ i ], where i is the index of the label - and in this particular example also the index of the image in the image list. The Value is a TChartValueText record consisting of the elements FText and FValue - FValue is the position of the label in the units displayed along the axis. To find the pixel coordinates we must call the conversion function GraphToImage of the Chart. If axis transfomrations are involved also the conversion from axis to graph coordinates must be invoked.
The bitmap can be extracted from the imagelist by calling the GetBitmap method. But since the OnAfterDraw event does not paint on a canvas but takes advantage of the Chart drawers it must be converted to a TLazIntfImage.
The is the entire painting routine:
procedure TForm1.Chart1AfterDraw(ASender: TChart; ADrawer: IChartDrawer);
var
i: Integer;
item: TChartValueText;
ximg: Integer;
xgr: Double;
bmp: TBitmap;
intfimg: TLazIntfImage;
begin
bmp := TBitmap.Create;
for i:=0 to Chart1.BottomAxis.ValueCount-1 do begin
// Find out where the axis label is
item := Chart1.BottomAxis.Value[i];
// ... convert position to screen pixel coordinates
xgr := Chart1BarSeries1.AxisToGraphX(item.FValue);
ximg := Chart1.XGraphToImage(xgr);
// Extract the flag icon
ImageList1.GetBitmap(i, bmp);
// ... convert to a TFPCustomImage needed by the drawer
intfimg := bmp.CreateIntfImage;
// and paint the image
ADrawer.PutImage(ximg - bmp.Width div 2, ClientHeight - bmp.Height-8, intfimg);
intfimg.Free;
end;
bmp.Free;
end;