The chart below comes by way of the is.R blog and shows the average ideology of the members of the United State House of Representatives within the Republican (red) and Democratic (blue) parties. (Other parties are shown in green.) The chart is shown as a time series, from the first US congress in 1789, to the most recent full congress (the 111th, from 2010). The 80th congress first met in 1947.
Ideology here is measured according to the DW-NOMINATE scale, a score that ranges from -1 (extremely liberal) to +1 (extremely conservative) based on legislative votes, and is designed to be comparable across time. (The source data is available for download at voteview.com.) The width of each band represents the spectrum of all but the 10% most extreme legislators within each party; the dark dot shows the median.
The graph shows that while both parties have always been distinct in their ideology, since about World War 1 there's at least been some slight overlap. All that changed in the early 70's though, as successive Republican congresses became increasingly more conservative in their voting records, while Democratic congresses remained much the same. Today, there's no ideological overlap between members of the two parties.
The chart above was created using the R language, and R programmers should take a look at the source code posted at the is.R blog. It's a great example of using the ddply function (from the plyr package) to aggregate the individual legislator ideology scores into medians and quantiles by party and congress. The ggplot function was used to create the chart itself, by overlaying the interquartile range and median points over a line chart of the 90% range. For more details, check out the full post at the link below.
(Update Nov 6: See another version of this chart based on code from Mike Lawrence in the comments below.)