MPG is related to how many miles you go. If you're sitting in stop and go traffic, mostly idling, yes you might only see 20-25 mpg. You must understand, that isn't city mileage. At best its extreme city driving. City mileage is you driving around 25-45 mph with a few stoplights here and there. You moving forward 5 feet, waiting 2 minutes, moving another 5 feet isn't city driving. Now understand, you should only be getting those low mileage numbers if all you ever do is drive it in bumper-bumper traffic. You drive it in some normal city or highway driving and it should jump up to 30 or more very quickly.
I've never seen my Sonic dip below 30 mpg. When I drive in rush hour traffic though, I'm never really waiting. Might stop every once in a while, but its mostly just cruising at 15-25 mph. I've been driving stick in traffic for a while so I have a couple tricks, though. Like, don't ride the bumper of the guy in front of you. You leave some buffer, don't brake constantly, and you get better mpg. In fact if EVERYONE did that, there would be no such thing as rush hour traffic. All the stop and go I see if some *******s tailgating and having to brake/stop just because the car in front of them slows down.