Visualize bivariate binomial distribution Question: what does a bivariate binomial distribution look like in 3-dimensional space?
Below is the specific function that I would like to visualize for various values of the parameters; namely, $n$, $p_{1}$, and $p_{2}$.
$$f(x_{1},x_{2}) = \frac{n!}{x_{1}!x_{2}!}p_{1}^{x_{1}}p_{2}^{x_{2}}, \qquad x_{1}+x_{2}=n, \quad p_{1}+p_{2}=1.$$  
Notice that there are two constraints; $x_{1}+x_{2}=n$ and $p_{1}+p_{2}=1$. In addition, $n$ is a positive integer, say, $5$. 
In have made two attempts to plot the function using LaTeX (TikZ/PGFPLOTS). In doing so, I get the graphs below for the following values: $n=5$, $p_{1}=0.1$ and $p_{2}=0.9$, and, $n=5$, $p_{1}=0.4$ and $p_{2}=0.6$, respectively. I haven't been successful at implementing the constraint on the domain values; $x_{1}+x_{2}=n$, so I'm a bit stumped. 
A visualization produced in any language would do fine (R, MATLAB, etc.), but I'm working in LaTeX with TikZ/PGFPLOTS.
First Attempt
$n=5$, $p_{1}=0.1$ and $p_{2}=0.9$

Second Attempt
$n=5$, $p_{1}=0.4$ and $p_{2}=0.6$

Edit:
For reference, here is an article containing some graphs. Title of paper is "A new bivariate binomial distribution" by Atanu Biswasa and Jing-Shiang Hwang. Statistics & Probability Letters 60 (2002) 231–240.
Edit 2:
For clarity, and in response to @GlenB in the comments, below is a snapshot of how the distribution has been presented to me in my book. The book does not refer to degenerate / non-degenerate cases and so on. It simply presents it like that and I sought to visualize it. Cheers! Also, as pointed out by @JohnK, there is likely to be a typo with regard to x1+x1=1, which he suggests should be x1+x1=n.

Image of equation from:
Spanos, A (1986) Statistical foundations of econometric modelling. Cambridge University Press
 A: gung's answer is a good answer for an actual bivariate binomial, explaining the issues well (I'd recommend accepting it as a good answer to the title question, most likely to be useful to others).
The mathematical object you actually present in your edit is really a univariate scaled binomial. Here $x_1$ is not the value taken by the binomial count but by the proportion (the binomial divided by $n$).
So let's define things properly. Note that no definition of the random variable is actually offered, so we're left with some guesswork.
Let $Y_1\sim \text{binomial}(n,p_1),\:$ Note that when we give a mathematical formula for $P(Y_1=y_1)$ it's necessary what values $y_1$ can take, so $y_1=0,1,...,n$. Let $X_1=Y_1/n$, and note that $x_1=0,\frac16,\frac26,...,1$.
Then the equation you give is the pmf for $P(X_1=x_1)$ (noting that $x_2=n-x_1$ and $p_2=1-p_1$). 
For $n=6,p_1=0.3$, it looks like this:

We can put $x_2$ values on the above plot quite readily, simply by putting a second set of labels under the $x_1$ values equal to $1-x_1$ (perhaps in a different colour) to indicate the value taken by $x_2$.
We could regard it as a (scaled) degenerate bivariate binomial:

but it's a bit of a stretch to really call what's defined in the book a bivariate binomial, (since it's effectively a univariate binomial). 
On the assumption that someone will want to generate a similar plot to the 3D one, this little bit of (R) code gets quite close to the second plot above:
y = 0:6
x1 = y/6
x2 = 1-x1
p = dbinom(y,6,.3)
scatterplot3d(x1,x2,p,grid=TRUE, box=FALSE, cex.lab=1.2,
        color=3, cex.main=1.4,pch=21,bg=1,, type="h",angle=120,
        main="degenerate scaled binomial", ylab="x2", xlab="x1", 
        zlab="prob")

(You need the scatterplot3d package which contains the function of the same name.)
A "true" (non-degenerate) bivariate binomial has variation in both variables at once. Here's an example of one particular kind of bivariate binomial (not independent in this case). I resorted to using different colours in the plot because it's too easy to get lost in the forest of "sticks" otherwise.

There are many ways to get an object that you might call a bivariate binomial; this particular kind is one where you have $X\sim\text{bin}(n_0,p)$,$Y\sim\text{bin}(n_y,p)$,$Z\sim\text{bin}(n_z,p)$ (all independent), then let $X_1=X+Y$ and $X_2=X+Z$.
This yields binomial $X_1$ and $X_2$ which are correlated (but has the disadvantage that it doesn't produce negative correlations).
An expression for the pmf of this particular kind of bivariate binomial distribution is given in Hamdan, 1972 [1] but I didn't use that calculation; one can easily do direct computation (numeric convolution). In this particular case $n_0$ was 4 and $n_y$ and $n_z$ were only 2 each so direct numeric computation across the whole grid (49 values in the final result) is not difficult or onerous. You start with a degenerate bivariate (both dimensions $=X$) similar to the degenerate one pictured above (but smaller and on the "main diagonal" - $x_1=x_2$ rather than the antidiagonal ($x_1+x_2=n$) and then add the independent components, spreading the probability along and out from the diagonal.
[1]: Hamdan, M.A. (1972),
"Canonical Expansion of the Bivariate Binomial Distribution with Unequal Marginal Indices"
International Statistical Review,  40:3 (Dec.), pp. 277-280 
A: Mathematica is now quite strong in such things - it has the solution of your problem right in documentation. With little additions I've made a model to play around (with p = p1 = 0.4 for better visual presentation).
That is how interface looks and how it can be controlled.

Snippet
Manipulate[
 Grid[{
   {DiscretePlot3D[
     PDF[MultinomialDistribution[n, {p, 1 - p}], {x, y}], {x, 0, 
      n}, {y, 0, n}, PlotLabel -> Row[{"n = ", n}], 
     ExtentSize -> Right],

    DiscretePlot3D[
     CDF[MultinomialDistribution[n, {p, 1 - p}], {x, y}], {x, 0, 
      n}, {y, 0, n}, PlotLabel -> Row[{"n = ", n}], 
     ExtentSize -> Right]}
   }]
 ,
 {{n, 5}, 1, 20, 1, Appearance -> "Labeled"},
 {{p, 0.4}, 0.1, 0.9},
 TrackedSymbols -> True
 ]

The main thing here is PDF[MultinomialDistribution[n, {p, 1 - p}], {x, y}], which is selfexplanatory, I think. Multinomial just mean that you may take a lot of distributions with each pi for respective variable. The simple form is BinomialDistribution.
Of course, I could make it manually, but the rule is if you have a build-in function - you should use it.
If you need some comments about code structure, please, just let me know.
