Long story short: it looks like currently, it is not possible (release 55.0)
Explanation:
There are two metadata types representing charts:
ListViewChart (https://developer.salesforce.com/docs/atlas.en-us.238.0.object_reference.meta/object_reference/sforce_api_objects_listviewchart.htm)
ListViewChartInstance (https://developer.salesforce.com/docs/atlas.en-us.238.0.object_reference.meta/object_reference/sforce_api_objects_listviewchartinstance.htm)
This means that you can actually query your existing Charts and their instances (which are basically relations between ListView and Chart):
ListViewChart example query:
SELECT Id, IsDeleted, SobjectType, DeveloperName, Language, MasterLabel, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById, SystemModstamp, OwnerId, ChartType, GroupingField, AggregateField, AggregateType
FROM ListViewChart
ListViewChartInstance example query:
SELECT AggregateField, AggregateType, ChartType, DataQuery, DeveloperName, ExternalId, GroupingField, Id, IsDeletable, IsEditable, IsLastViewed, Label, ListViewChartId, ListViewContextId, SourceEntity
FROM ListViewChartInstance
WHERE SourceEntity='<YOUR-SOBJECT-NAME>' and ListViewContextID='<YOUR-LISTVIEW-ID>'
Unfortunately, it looks like this data could not be retrieved using MetadataAPI - I tried to retrieve them via sfdx:
sfdx force:source:retrieve -m ListViewChartInstance
sfdx force:source:retrieve -m ListViewChart
and what I get is:
ERROR running force:source:retrieve: The specified metadata type is unsupported: [listviewchartinstance]
ERROR running force:source:retrieve: The specified metadata type is unsupported: [listviewchart]]
I also tried to insert them using AnonymousApex but I get error: "DML operation Insert not allowed on ListViewChart"
I found some idea on ideaexchange but it's not that popular:
https://ideas.salesforce.com/s/idea/a0B8W00000GdXjqUAF/list-view-chart-deployment-to-higher-sandboxs