Certain things in the interface take into account all games we've played with heroes (such as if you feature a hero on your profile, you'll see the correct wins/losses/GP), but the 'average stats' on your hero pages doesn't use stats from all the games you've played with those heroes. It seems to only use stats from after a certain client update (don't know if it's 7.00 or earlier). That's fine for new players who only started playing after this point, but not for people who've been playing longer and have dozens or hundreds of games with some heroes. That is useful data when it comes to tracking performance and improvement over time (and with Dota you are talking about years being a relevant time scale).
The graph of the most recent twenty games, though, is the most recent twenty games - even if some of those games are years previous. The XPM/GPM/KDA is correctly charted. I understand why the graph is limited to displaying only 20 games but the overall hero stats should actually do what it says, and grab all the data available - it only takes fractions of a second for someone to get that data, could be calculated in batches for everyone and aggregated, or done when needed per request.
If you're interested, you can collect your match data with the Dota API (assuming that still exists/works ok) and put your stats into a spreadsheet or your own apps, if you want to crunch the numbers in more detail (eg XP relative to the match, your team, your average for all heroes, K+A/D, etc). However, if some of the stats are in client, why not make them properly accurate and useful.
tldr; Please let the in-game Dota hero stats use our entire (real) match history for each hero, not just games after an arbitrary point in the past year (?).