Online Graphic Output
- To: mathgroup at smc.vnet.net
- Subject: [mg97884] Online Graphic Output
- From: Mark McClure <mcmcclur at unca.edu>
- Date: Tue, 24 Mar 2009 05:34:36 -0500 (EST)
On Mon, Mar 23, 2009 at 5:43 AM, <werner.lechner at t-online.de> wrote:
> Thank You for your advice. But I could not solve my problem.
> Therefore I reduced the problem to a simple code example:
>
> Do[{ x = Random[], y = Random[], p = Point[{x, y}],
> Graphics[{PointSize[0.1], p}, GridLines -> Automatic,
> Frame -> True, PlotRange -> { {-1, 1}, {-1, 1}}]} ,
> {n, 1, 5}]
>
> I would like to receive a single graphic with 5 points plotted.
> The statements within the Do loop show nothing, not even a
> error message with the Mathematica version 7.
The output of Do is always Null. Thus, the code generates no
graphic. You can examine the values of x, y, and p to see that
something has happened. Also, you're writing over the value
of p every time through anyway so the final graphic has only
one point. How about
points = {};
Do[x = RandomReal[{-1, 1}];
y = RandomReal[{-1, 1}];
AppendTo[points, {x, y}];
p = Point[points], {5}];
Graphics[{PointSize[0.1], p},
GridLines -> Automatic, Frame -> True,
PlotRange -> {{-1, 1}, {-1, 1}}]
My understanding from the MathGroup discussion was that you
would like the images to be updated dynamically. You can
achieve this effect as follows.
p = {};
points = {};
Graphics[{PointSize[0.1], Dynamic[p]},
GridLines -> Automatic, Frame -> True,
PlotRange -> {{-1, 1}, {-1, 1}}]
Do[x = RandomReal[{-1, 1}];
y = RandomReal[{-1, 1}];
AppendTo[points, {x, y}];
p = Point[points]; Pause[1],
{5}];
Note that that is two separate cells. The first sets up the graph
with a dynamic variable and the second adjusts that variable.
As I mentioned in my MathGroup post, I don't really like
AppendTo for this purpose. The list in this example is short
though and the AppendTo is very simple.
Hope that helps,
Mark McClure