I had to study the plot docs, and experiment a little. The page
http://code.jsoftware.com/wiki/Plot/Data is probably the most
important to understand.

For your item 1, something like this might work (change the pensize to
change the size of the dots - the default size is too small for a
graph with only a few dots):

  'type dot;pensize 5' plot ;/|:0 0, 2 _3, _1 2, 1 1,_1 _2,: 3 4

Note, especially, that I used ,: between the last pair of points so
these would form into a matrix rather than a long vector. (And then I
flipped the matrix on its side with |: and broke it into x and y
elements using ;/ so that plot would recognize the data in the way you
wanted it to.)

For your item 2, I just now saw Lippu Esa post what looks like a good
answer while I was composing this message.

For your item 4 ..  according to
http://code.jsoftware.com/wiki/Plot/Types plot currently does not
support dot plots for 3d data. I sometimes struggle understanding
plot's limitations, but since I have not been prepared to rewrite it,
I mostly just accept them as they are. Still, we could use a stick
plot:

    'type stick; pensize 5' plot ;/|:_1 _1 _1,0 0 0, 2 _3 1, _1 2 0, 1
1 1,_1 _2 3,: 3 4 2

Sadly, it looks like a stick plot does not adequately show some
points. We could work around that by adding another point to force a
different bounding box:

  'type stick; pensize 5' plot ;/|:_1 _1 _1,0 0 0, 2 _3 1, _1 2 0, 1 1
1,_1 _2 3,: 3 4 2

There might be a better way?

For your item 5, you can also set the observer viewpoint:

    'type stick; pensize 5; viewpoint _1.6 _2.4 1.5' plot ;/|:0 0 0, 2
_3 1, _1 2 0, 1 1 1,_1 _2 3,: 3 4  2

And, finally, for your item 6, you would probably want to break up
this one-liner into a sequence of commands, as was illustrated in
Lippu Esa's post. (You do get a sequence of commands separated by ; in
the left hand argument to plot, but to break up the data and issue
commands for different chunks of data you need to work with a sequence
of pd statements.)

Thanks,

-- 
Raul



On Fri, Oct 27, 2017 at 11:32 PM, 'Skip Cave' via Programming
<programm...@jsoftware.com> wrote:
> As part of my NLP project, I need a way to plot 2D & 3D point cluster plots.
> Let's take the example in my previous email:
>
>      (0 0, 2 _3 ,: _1 2) dis 1 1,_1 _2,:3 4
>
> 1.41421 3.16228 4.47214
>
> In that distance calculation, their are 6 coordinate pairs, representing 6
> points in x & y.
> The six points are:
>
>  0 0, 2 _3, _1 2, 1 1,_1 _2, 3 4
>
> I want to see a plot of those 6 points.
>
> 1. How do I make a 2D plot that shows these 6 points as small dots on an xy
> graph.
> 2. How can I make the first three points red dots, and the last three
> points blue dots?
> 3. Now assume I have 6 more points, but they are in three dimensions:
>
> 0 0 0, 2 _3 1, _1 2 0, 1 1 1,_1 _2 3, 3 4  2
>
> 4. How do I make a 3D plot that shows these 6 points as small dots in a 3D
> xyz perspective view graph
> 5. How do I rotate the view?
> 6. How can I make the first three points red dots, and the last three
> points blue dots?
>
> Skip
>
> <<<>>>
>
>
> On Fri, Oct 27, 2017 at 9:48 PM, Skip Cave <s...@caveconsulting.com> wrote:
>
>> Raul,
>>
>> Yes, rank was the problem. It hit me while I was eating dinner
>> but your solution was different than what I expected (they usually are):
>>
>> Raul:
>>
>>      dis =.4 :'%:+/*:x-y' "1
>>
>>      (0 0, 2 _3 ,: _1 2) dis 1 1,_1 _2,:3 4
>>
>> 1.41421 3.16228 4.47214
>>
>>
>>        0 0 dis 1 1,_1 _2,:3 4
>>
>> 1.41421 2.23607 5
>>
>>
>> I need to study this more. My solution was:
>>
>>      dis =. 4 :'%:+/"1 *:x-y'
>>
>>
>>      (0 0, 2 _3 ,: _1 2) dis 1 1,_1 _2,:3 4
>>
>> 1.41421 3.16228 4.47214
>>
>>
>>      0 0 dis 1 1,_1 _2,:3 4
>>
>> |length error: dis
>>
>> |     %:+/"1*:x -y
>>
>>
>> So my scheme doesn't work for one-to-many. It just works on one-to-one
>>
>> & many-to-many (both nouns must be the same size).
>>
>> I had no idea you could put the rank operator outside the quotes!
>>
>> Where does the language description doc discuss this trick?
>>
>>
>> Skip
>>
>> Skip Cave
>> Cave Consulting LLC
>>
>> On Fri, Oct 27, 2017 at 7:03 PM, Raul Miller <rauldmil...@gmail.com>
>> wrote:
>>
>>> The items that dis is expecting are rank 1 vectors. So it might make
>>> sense to include a rank 1 specification in its definition:
>>>
>>>    dis =: 4 :'%:+/*:x-y'"1
>>>
>>> Does that work for this example?
>>>
>>>    0 0 dis 1 1,_1 _2,:3 4
>>> 1.41421 2.23607 5
>>>
>>> ... seems so ...
>>>
>>> Thanks,
>>>
>>> --
>>> Raul
>>>
>>>
>>> On Fri, Oct 27, 2017 at 7:11 PM, 'Skip Cave' via Programming
>>> <programm...@jsoftware.com> wrote:
>>> > In the 2014-11-11 NYCJUG meeting
>>> > <http://code.jsoftware.com/wiki/NYCJUG/2014-11-11> there was a
>>> discussion
>>> > on Euclidean Distance. The verb 'dis' was used to demonstrate how to to
>>> > calculate the Euclidean distance between two vectors.
>>> >
>>> > 0 0 dis 1 1 NB. Euclidean distance 1.41421 1 1,_1 _2,:3 4 NB. Table of
>>> 2-D
>>> > points 1 1 _1 _2 3 4 0 0 dis 1 1,_1 _2,:3 4 NB. Distances from origin
>>> > 1.41421 2.23607 5 0 0 0 dis 1 1 1 NB. Handles higher dimensions 1.73205
>>> > I have a NLP project that needs to calculate the
>>> > Euclidean distance between points in a multi-dimensional
>>> > space. I now the basic formula - square the differences,
>>> > sum the squares, take the square root of the sum:
>>> >
>>> >    dis =. 4 :'%:+/*:x-y'
>>> >
>>> >    0 0 dis 1 1
>>> >
>>> > 1.41421
>>> >      0 0 0 dis 1 1 1
>>> >
>>> > 1.73205
>>> >
>>> > Looking good....
>>> >
>>> >    0 0 dis 1 1,_1 _2,:3 4
>>> >
>>> > |length error: dis
>>> >
>>> > | %:+/*:x -y
>>> >
>>> > Ooops!
>>> >
>>> > How can I make dis handle multiple pairs of vectors?
>>> >
>>> > like:
>>> >
>>> >   (0 0, 2 _3 ,: _1 2) dis 1 1,_1 _2,:3 4
>>> >
>>> > 1.41421  3.16228  4.47214
>>> >
>>> > Skip Cave
>>> > Cave Consulting LLC
>>> > ----------------------------------------------------------------------
>>> > For information about J forums see http://www.jsoftware.com/forums.htm
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>
>>
>>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to