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