       Re: plotting multiple polygons

• To: mathgroup at smc.vnet.net
• Subject: [mg29184] Re: plotting multiple polygons
• From: Tom Burton <tburton at cts.com>
• Date: Sat, 2 Jun 2001 05:54:38 -0400 (EDT)
• Organization: Brahea Consulting
• References: <9f7k2s\$gup\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Hi,

Consider a file temp.txt:

1 1
2 1
1 2
1 1

3 1
4 1
3 2
3 1

The first issue is to get Mathematica to include the blank lines in the processed input. I could not quickly get Mathematica to do this with Number, so I used Word instead and them converted the words to expressions:

In:=
Word, NullRecords -> True, RecordLists ->
True], {2}]

{{1, 1}, {2, 1}, {1, 2}, {1, 1}, {}, {3, 1},
{4, 1}, {3, 2}, {3, 1}, {}}

The next thing to do is to split the list into sublists, breaking at the empty lists:

In:=
data2 = Split[data1, #1 != {} & ]

{{{1, 1}, {2, 1}, {1, 2}, {1, 1}, {}},
{{3, 1}, {4, 1}, {3, 2}, {3, 1}, {}}}

In:=
data3 = (DeleteCases[#1, {}] & ) /@ data2

{{{1, 1}, {2, 1}, {1, 2}, {1, 1}},
{{3, 1}, {4, 1}, {3, 2}, {3, 1}}}

The Polygon[__] pattern does not include the repeated first point, so if you want to use Polygon, drop the first (or last) point from each sublist:

In:=
data4 = Rest/@data3

{{{2, 1}, {1, 2}, {1, 1}}, {{4, 1}, {3, 2},
{3, 1}}}

Then to show filled polygons:

In:=
Show[Graphics[Polygon /@ data4]];

To show unfilled polygons, you can use the low-level form

In:=
Show[Graphics[Line /@ data3]];

The easiest high-level command to use is probably MultipleListPlot

In:=
Needs["Graphics`MultipleListPlot`"]

I needed the PlotStyle Command to prevent MultipleListPlot from assigning various styles to the various polygons:

In:=
MultipleListPlot[Sequence @@ data3,
PlotJoined -> True, PlotStyle -> Dashing[{}]];

Tom Burton

------

On Fri, 1 Jun 2001 08:34:36 +0000 (UTC), in comp.soft-sys.math.mathematica you wrote:

>Hi again!
>
>I have a set of points in ASCII file as follows:
>
>x11  y11
>x12  y12
>....
>x1n1 y1n1
>x11  y11
>
>x21  y21
>x22  y22
>....
>x2n2 y2n2
>x21  y21
>
>x31  y31
>x32  y32
>....
>x3n3 y3n3
>x31  y31
>
>....
>
>Basically, there are multiple (and many many) groups of consecutive
>lines of x and y coordinates of points, each group representing a
>polygon and each group is separated by an empty line from other
>groups.
>
>I need to make one plot that shows all the polygons, unconnected one
>another.
>
>If I do the following, I would get a plot that shows all the polygons
>connected one another.
>
>In:= ListPlot[polygons, PlotJoined->True];
>
>Any simple way to draw standalone polygons in one plot?
>
>Thanks,
>
>Xiangdong Liu
>

Tom

```

• Prev by Date: RE: I hate using Legend
• Next by Date: Re: RSA and Fixed Exponents
• Previous by thread: plotting multiple polygons
• Next by thread: Re: Faster rotate bitmap