cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Choose Language Hide Translation Bar
Venn Diagram

This add-in constructs Venn diagrams with either constant or proportional areas.  The former accommodate up to five variables and the latter are limited only by the distribution of the counts corresponding to the variables.

 

The proportional-area diagrams call methods kindly provided by Lee Wilkinson and documented in his paper “Exact and Approximate Area-proportional Circular Venn and Euler Diagrams”, available at http://www.cs.uic.edu/~wilkinson/Publications/venneuler.pdf  The corresponding computations are performed in Java, so you must have Java installed on your machine to run them.

 

The input can be either a single table with 0-1 variables or multiple tables with lists of items.  For details, click Add-Ins -> Venn Diagram -> Help after installing the add-in.

 

An example screenshot is below.

 

6641_venn6.jpg

 

Comments

Hello @Nazarkovsky ,   The environment variable JAVA_HOME without the dollar sign looks to be correct.   Let's check a couple things:  1. Is there any message in the JMP log?   A successful run should include the message like "Using installed JRE from: C:\ProgramData\Oracle\Java\javapath\java.exe".    2.  Open a Windows command prompt and type "java -version".   You should see the version and Runtime Environment numbers.  Then enter "SET" and scroll down to verify JAVA_HOME is listed correctly in the environment variables.  

Dear Russ,

Thanks! I did all you said. The screenshots are kindly enclosed. Everything is checked and anyway the same bug appears. Perhaps, it may be related to the JAVA version or its position. At least, the VennSector column is generated. But the diagrams not   Your advice would be very helpful.
JMP Pro 16, Windows 10.

Nazarkovsky_0-1657936737807.jpeg

Nazarkovsky_1-1657936766125.jpegNazarkovsky_2-1657936776976.jpeg

Nazarkovsky_3-1657936792221.jpeg

 

 

 

@Nazarkovsky  Curious, I have the exact same JRE and it works.   Let's try the following isolated test:

1.  Open the add-in home folder:  Click View > Add-Ins,   highlight Venn Diagram, then click the linked home folder.   In this folder you should see a file named venn_in.txt.   This is the input file for the java routine to compute proportional area locations.   For the example data with six 0-1 variables, this file should contain the following text:  

 

set area
A 4
B 6
A&B 2
C 3
B&C 2
D 2
B&D 1
C&D 1
B&C&D 1
E 7
D&E 1
F 3
A&F 2
B&F 2
A&B&F 1
E&F 1

If this file does not exist, create it with the above text.

 

 

2. If a file named venn_out.txt exists, delete it.  

 

3. Open a JMP Script window and run the following code:

HomeFolder = ConvertFilePath("$ADDIN_HOME(com.jmp.venn)", absolute, windows);
jarpath = ConvertFilePath("$ADDIN_HOME(com.jmp.venn)/VennDiagrams.jar",absolute,windows);
javaCommand = "java";
templateEngineResults = RunProgram(
	Executable(javaCommand),
	Options(evalList({"-classpath", jarPath, "edu.uic.ncdm.venn.Venn", HomeFolder || "venn_in.txt", HomeFolder || "venn_out.txt"})),
	ReadFunction("text")
);

 

4. The code should run cleanly for 5-10 seconds and create venn_out.txt.   That file should contain the following:

Name	x-coordinate	y-coordinate	radius
A	165	397	115
B	324	419	149
C	464	418	101
D	437	304	94
E	350	165	115
F	222	289	115

 

Dear @russ_wolfinger ,

The home folder is checked - no output file. the Input file does exist. 
The script encountered a fail while running in the new JMP script window. Looks quite basic error, but I have no clue in details. The screenshots are kindly enclosed.
Thanks!

Nazarkovsky_0-1657973978429.jpeg

Nazarkovsky_1-1657973998533.jpeg

 

@Nazarkovsky ,  In the JMP script it looks like the final line is missing.   Please add ");" to the end of it and try running again.

@russ_wolfinger , sorry, it was my mistake indeed. I added that sign and ran the code without any error alert. However, no output file was generated thereupon. It looks confusing, yes. I checked it also with the EA version of JMP Pro 17 and did not work out well too. Hence, the script itself is encountering some internal error. It might be related to JAVA variable or its location, since the add-in has addressed it alerts to variable. I will re-install Java for my Win10-64 bit and run the add-in again.


Nazarkovsky_0-1658023604655.jpeg

Nazarkovsky_1-1658023629645.jpeg

 

Re-installed and the same story continues

Not sure why the Java program is not running for you.   In addition to reinstalling Java, you might want to re-download and reinstall the Venn add-in.   Also, if you have another Windows or Mac machine with JMP on it, it would be worth trying there too.   

OK, let's go even more direct and run the java program directly from the command line:

1. Open a command prompt and cd to the add-in folder, should be something like C:\Users\<your_username>\AppData\Roaming\SAS\JMP\Addins\com.jmp.venn

 

2. Enter the following command:  java -verbose:class -verbose:jni -classpath VennDiagrams.jar edu.uic.ncdm.venn.Venn venn_in.txt venn_out1.txt   (The JSL script above effectively executes this line sans the verbose options using RunProgram.)

 

3.  This should output a bunch of lines beginning with "[Loaded" and "[Dynamic-linking" and then produce the file venn_out1.txt after a few seconds.   Do you see any error messages?

 

I wonder maybe if this has anything to do with file permissions.   In File Explorer, navigate to one level above the add-in folder, e.g. C:\Users\<your_username>\AppData\Roaming\SAS\JMP\Addins\,  right-click on com.jmp,venn > Properties.  Uncheck "Read-only" and apply to the whole folder.    Then try the steps above again, or you can even run the java command from any writeable folder if you copy VennDiagrams.jar and venn_in.txt into it first.   

 

Dear @russ_wolfinger 

I did it - yes, the indicators appeared and no error was presented. But no output file was produced after the run. That's the issue that no output.txt is generated in all cases. Very strange. I am really sorry that it takes your time - especially, during the weekend. Before the cmd run, I had re-installed the add-in, as  proposed by you - it also did not help with normal launching the add. 

Nazarkovsky_0-1658076982946.jpegNazarkovsky_1-1658076990352.jpegNazarkovsky_2-1658077012669.jpeg

 

 

@Nazarkovsky   Let's keep tracking it.   If you would now please send me the the entire output using the following steps:

1. Ensure VennDiagrams.jar and venn_in.txt are copied into the C:\Users\Michael Nazarkovsky\   folder

2. Run the same java command as before but add the following onto the end:  " > java_log.txt"   .  This will dump all of the output into the file java_log.txt.

3.Check if venn_out1.txt is created in the same folder.   If not, email java_log.txt to russ.wolfinger@jmp.com.     If the output file is created here, then we likely have a permissions issue with the add-in folder.  

@Nazarkovsky  Thanks for your patience in working with me on this.  It looks like the problem was with a space in your username path, similar to https://community.jmp.com/t5/Discussions/Runprogram-with-Space-Char-in-FilePath/td-p/337682 .  I just pushed an updated add-in that should work now.

Dear @russ_wolfinger , I did it and while launching the add-in (picture) another error appeared, whereas eventually no diagram was built. But, which is important, the output file has been generated with the proper content. The copied text of the error report is provided here - I could enclose the .TXT file to the message. I do not know if this time it is related to the space in the User folder name. Thanks!

Nazarkovsky_0-1658836587357.jpeg


The error report content:
[Dynamic-linking native method java.lang.Object.registerNatives ... JNI]
[Registering JNI native method java.lang.Object.hashCode]
[Registering JNI native method java.lang.Object.wait]
[Registering JNI native method java.lang.Object.notify]
[Registering JNI native method java.lang.Object.notifyAll]
[Registering JNI native method java.lang.Object.clone]
[Dynamic-linking native method java.lang.System.registerNatives ... JNI]
[Registering JNI native method java.lang.System.currentTimeMillis]
[Registering JNI native method java.lang.System.nanoTime]
[Registering JNI native method java.lang.System.arraycopy]
[Dynamic-linking native method java.lang.Thread.registerNatives ... JNI]
[Registering JNI native method java.lang.Thread.start0]
[Registering JNI native method java.lang.Thread.stop0]
[Registering JNI native method java.lang.Thread.isAlive]
[Registering JNI native method java.lang.Thread.suspend0]
[Registering JNI native method java.lang.Thread.resume0]
[Registering JNI native method java.lang.Thread.setPriority0]
[Registering JNI native method java.lang.Thread.yield]
[Registering JNI native method java.lang.Thread.sleep]
[Registering JNI native method java.lang.Thread.currentThread]
[Registering JNI native method java.lang.Thread.countStackFrames]
[Registering JNI native method java.lang.Thread.interrupt0]
[Registering JNI native method java.lang.Thread.isInterrupted]
[Registering JNI native method java.lang.Thread.holdsLock]
[Registering JNI native method java.lang.Thread.getThreads]
[Registering JNI native method java.lang.Thread.dumpThreads]
[Registering JNI native method java.lang.Thread.setNativeName]
[Dynamic-linking native method java.security.AccessController.getStackAccessControlContext ... JNI]
[Dynamic-linking native method java.security.AccessController.getInheritedAccessControlContext ... JNI]
[Dynamic-linking native method java.lang.Class.registerNatives ... JNI]
[Registering JNI native method java.lang.Class.getName0]
[Registering JNI native method java.lang.Class.getSuperclass]
[Registering JNI native method java.lang.Class.getInterfaces0]
[Registering JNI native method java.lang.Class.isInterface]
[Registering JNI native method java.lang.Class.getSigners]
[Registering JNI native method java.lang.Class.setSigners]
[Registering JNI native method java.lang.Class.isArray]
[Registering JNI native method java.lang.Class.isPrimitive]
[Registering JNI native method java.lang.Class.getComponentType]
[Registering JNI native method java.lang.Class.getModifiers]
[Registering JNI native method java.lang.Class.getDeclaredFields0]
[Registering JNI native method java.lang.Class.getDeclaredMethods0]
[Registering JNI native method java.lang.Class.getDeclaredConstructors0]
[Registering JNI native method java.lang.Class.getProtectionDomain0]
[Registering JNI native method java.lang.Class.getDeclaredClasses0]
[Registering JNI native method java.lang.Class.getDeclaringClass0]
[Registering JNI native method java.lang.Class.getGenericSignature0]
[Registering JNI native method java.lang.Class.getRawAnnotations]
[Registering JNI native method java.lang.Class.getConstantPool]
[Registering JNI native method java.lang.Class.desiredAssertionStatus0]
[Registering JNI native method java.lang.Class.getEnclosingMethod0]
[Registering JNI native method java.lang.Class.getRawTypeAnnotations]
[Dynamic-linking native method java.lang.ClassLoader.registerNatives ... JNI]
[Registering JNI native method java.lang.ClassLoader.retrieveDirectives]
[Dynamic-linking native method java.security.AccessController.doPrivileged ... JNI]
[Dynamic-linking native method java.lang.Class.forName0 ... JNI]
[Dynamic-linking native method sun.misc.Unsafe.registerNatives ... JNI]
[Registering JNI native method sun.misc.Unsafe.getObject]
[Registering JNI native method sun.misc.Unsafe.putObject]
[Registering JNI native method sun.misc.Unsafe.getObjectVolatile]
[Registering JNI native method sun.misc.Unsafe.putObjectVolatile]
[Registering JNI native method sun.misc.Unsafe.getBoolean]
[Registering JNI native method sun.misc.Unsafe.putBoolean]
[Registering JNI native method sun.misc.Unsafe.getBooleanVolatile]
[Registering JNI native method sun.misc.Unsafe.putBooleanVolatile]
[Registering JNI native method sun.misc.Unsafe.getByte]
[Registering JNI native method sun.misc.Unsafe.putByte]
[Registering JNI native method sun.misc.Unsafe.getByteVolatile]
[Registering JNI native method sun.misc.Unsafe.putByteVolatile]
[Registering JNI native method sun.misc.Unsafe.getShort]
[Registering JNI native method sun.misc.Unsafe.putShort]
[Registering JNI native method sun.misc.Unsafe.getShortVolatile]
[Registering JNI native method sun.misc.Unsafe.putShortVolatile]
[Registering JNI native method sun.misc.Unsafe.getChar]
[Registering JNI native method sun.misc.Unsafe.putChar]
[Registering JNI native method sun.misc.Unsafe.getCharVolatile]
[Registering JNI native method sun.misc.Unsafe.putCharVolatile]
[Registering JNI native method sun.misc.Unsafe.getInt]
[Registering JNI native method sun.misc.Unsafe.putInt]
[Registering JNI native method sun.misc.Unsafe.getIntVolatile]
[Registering JNI native method sun.misc.Unsafe.putIntVolatile]
[Registering JNI native method sun.misc.Unsafe.getLong]
[Registering JNI native method sun.misc.Unsafe.putLong]
[Registering JNI native method sun.misc.Unsafe.getLongVolatile]
[Registering JNI native method sun.misc.Unsafe.putLongVolatile]
[Registering JNI native method sun.misc.Unsafe.getFloat]
[Registering JNI native method sun.misc.Unsafe.putFloat]
[Registering JNI native method sun.misc.Unsafe.getFloatVolatile]
[Registering JNI native method sun.misc.Unsafe.putFloatVolatile]
[Registering JNI native method sun.misc.Unsafe.getDouble]
[Registering JNI native method sun.misc.Unsafe.putDouble]
[Registering JNI native method sun.misc.Unsafe.getDoubleVolatile]
[Registering JNI native method sun.misc.Unsafe.putDoubleVolatile]
[Registering JNI native method sun.misc.Unsafe.getByte]
[Registering JNI native method sun.misc.Unsafe.putByte]
[Registering JNI native method sun.misc.Unsafe.getShort]
[Registering JNI native method sun.misc.Unsafe.putShort]
[Registering JNI native method sun.misc.Unsafe.getChar]
[Registering JNI native method sun.misc.Unsafe.putChar]
[Registering JNI native method sun.misc.Unsafe.getInt]
[Registering JNI native method sun.misc.Unsafe.putInt]
[Registering JNI native method sun.misc.Unsafe.getLong]
[Registering JNI native method sun.misc.Unsafe.putLong]
[Registering JNI native method sun.misc.Unsafe.getFloat]
[Registering JNI native method sun.misc.Unsafe.putFloat]
[Registering JNI native method sun.misc.Unsafe.getDouble]
[Registering JNI native method sun.misc.Unsafe.putDouble]
[Registering JNI native method sun.misc.Unsafe.getAddress]
[Registering JNI native method sun.misc.Unsafe.putAddress]
[Registering JNI native method sun.misc.Unsafe.allocateMemory]
[Registering JNI native method sun.misc.Unsafe.reallocateMemory]
[Registering JNI native method sun.misc.Unsafe.freeMemory]
[Registering JNI native method sun.misc.Unsafe.objectFieldOffset]
[Registering JNI native method sun.misc.Unsafe.staticFieldOffset]
[Registering JNI native method sun.misc.Unsafe.staticFieldBase]
[Registering JNI native method sun.misc.Unsafe.ensureClassInitialized]
[Registering JNI native method sun.misc.Unsafe.arrayBaseOffset]
[Registering JNI native method sun.misc.Unsafe.arrayIndexScale]
[Registering JNI native method sun.misc.Unsafe.addressSize]
[Registering JNI native method sun.misc.Unsafe.pageSize]
[Dynamic-linking native method java.lang.Throwable.fillInStackTrace ... JNI]
[Registering JNI native method sun.misc.Unsafe.getObject]
[Registering JNI native method sun.misc.Unsafe.putObject]
[Registering JNI native method sun.misc.Unsafe.getObjectVolatile]
[Registering JNI native method sun.misc.Unsafe.putObjectVolatile]
[Registering JNI native method sun.misc.Unsafe.getBoolean]
[Registering JNI native method sun.misc.Unsafe.putBoolean]
[Registering JNI native method sun.misc.Unsafe.getBooleanVolatile]
[Registering JNI native method sun.misc.Unsafe.putBooleanVolatile]
[Registering JNI native method sun.misc.Unsafe.getByte]
[Registering JNI native method sun.misc.Unsafe.putByte]
[Registering JNI native method sun.misc.Unsafe.getByteVolatile]
[Registering JNI native method sun.misc.Unsafe.putByteVolatile]
[Registering JNI native method sun.misc.Unsafe.getShort]
[Registering JNI native method sun.misc.Unsafe.putShort]
[Registering JNI native method sun.misc.Unsafe.getShortVolatile]
[Registering JNI native method sun.misc.Unsafe.putShortVolatile]
[Registering JNI native method sun.misc.Unsafe.getChar]
[Registering JNI native method sun.misc.Unsafe.putChar]
[Registering JNI native method sun.misc.Unsafe.getCharVolatile]
[Registering JNI native method sun.misc.Unsafe.putCharVolatile]
[Registering JNI native method sun.misc.Unsafe.getInt]
[Registering JNI native method sun.misc.Unsafe.putInt]
[Registering JNI native method sun.misc.Unsafe.getIntVolatile]
[Registering JNI native method sun.misc.Unsafe.putIntVolatile]
[Registering JNI native method sun.misc.Unsafe.getLong]
[Registering JNI native method sun.misc.Unsafe.putLong]
[Registering JNI native method sun.misc.Unsafe.getLongVolatile]
[Registering JNI native method sun.misc.Unsafe.putLongVolatile]
[Registering JNI native method sun.misc.Unsafe.getFloat]
[Registering JNI native method sun.misc.Unsafe.putFloat]
[Registering JNI native method sun.misc.Unsafe.getFloatVolatile]
[Registering JNI native method sun.misc.Unsafe.putFloatVolatile]
[Registering JNI native method sun.misc.Unsafe.getDouble]
[Registering JNI native method sun.misc.Unsafe.putDouble]
[Registering JNI native method sun.misc.Unsafe.getDoubleVolatile]
[Registering JNI native method sun.misc.Unsafe.putDoubleVolatile]
[Registering JNI native method sun.misc.Unsafe.getByte]
[Registering JNI native method sun.misc.Unsafe.putByte]
[Registering JNI native method sun.misc.Unsafe.getShort]
[Registering JNI native method sun.misc.Unsafe.putShort]
[Registering JNI native method sun.misc.Unsafe.getChar]
[Registering JNI native method sun.misc.Unsafe.putChar]
[Registering JNI native method sun.misc.Unsafe.getInt]
[Registering JNI native method sun.misc.Unsafe.putInt]
[Registering JNI native method sun.misc.Unsafe.getLong]
[Registering JNI native method sun.misc.Unsafe.putLong]
[Registering JNI native method sun.misc.Unsafe.getFloat]
[Registering JNI native method sun.misc.Unsafe.putFloat]
[Registering JNI native method sun.misc.Unsafe.getDouble]
[Registering JNI native method sun.misc.Unsafe.putDouble]
[Registering JNI native method sun.misc.Unsafe.getAddress]
[Registering JNI native method sun.misc.Unsafe.putAddress]
[Registering JNI native method sun.misc.Unsafe.allocateMemory]
[Registering JNI native method sun.misc.Unsafe.reallocateMemory]
[Registering JNI native method sun.misc.Unsafe.freeMemory]
[Registering JNI native method sun.misc.Unsafe.objectFieldOffset]
[Registering JNI native method sun.misc.Unsafe.staticFieldOffset]
[Registering JNI native method sun.misc.Unsafe.staticFieldBase]
[Registering JNI native method sun.misc.Unsafe.ensureClassInitialized]
[Registering JNI native method sun.misc.Unsafe.arrayBaseOffset]
[Registering JNI native method sun.misc.Unsafe.arrayIndexScale]
[Registering JNI native method sun.misc.Unsafe.addressSize]
[Registering JNI native method sun.misc.Unsafe.pageSize]
[Registering JNI native method sun.misc.Unsafe.defineClass]
[Registering JNI native method sun.misc.Unsafe.allocateInstance]
[Registering JNI native method sun.misc.Unsafe.monitorEnter]
[Registering JNI native method sun.misc.Unsafe.monitorExit]
[Registering JNI native method sun.misc.Unsafe.tryMonitorEnter]
[Registering JNI native method sun.misc.Unsafe.throwException]
[Registering JNI native method sun.misc.Unsafe.compareAndSwapObject]
[Registering JNI native method sun.misc.Unsafe.compareAndSwapInt]
[Registering JNI native method sun.misc.Unsafe.compareAndSwapLong]
[Registering JNI native method sun.misc.Unsafe.putOrderedObject]
[Registering JNI native method sun.misc.Unsafe.putOrderedInt]
[Registering JNI native method sun.misc.Unsafe.putOrderedLong]
[Registering JNI native method sun.misc.Unsafe.park]
[Registering JNI native method sun.misc.Unsafe.unpark]
[Registering JNI native method sun.misc.Unsafe.getLoadAverage]
[Registering JNI native method sun.misc.Unsafe.copyMemory]
[Registering JNI native method sun.misc.Unsafe.setMemory]
[Registering JNI native method sun.misc.Unsafe.defineAnonymousClass]
[Registering JNI native method sun.misc.Unsafe.shouldBeInitialized]
[Registering JNI native method sun.misc.Unsafe.loadFence]
[Registering JNI native method sun.misc.Unsafe.storeFence]
[Registering JNI native method sun.misc.Unsafe.fullFence]
[Dynamic-linking native method sun.reflect.Reflection.getCallerClass ... JNI]
[Dynamic-linking native method java.lang.Class.getPrimitiveClass ... JNI]
[Dynamic-linking native method java.lang.Float.floatToRawIntBits ... JNI]
[Dynamic-linking native method java.lang.Double.doubleToRawLongBits ... JNI]
[Dynamic-linking native method java.lang.Double.longBitsToDouble ... JNI]
[Dynamic-linking native method sun.misc.VM.initialize ... JNI]
[Dynamic-linking native method java.lang.System.initProperties ... JNI]
[Dynamic-linking native method java.lang.String.intern ... JNI]
[Dynamic-linking native method java.lang.Object.getClass ... JNI]
[Dynamic-linking native method sun.reflect.Reflection.getClassAccessFlags ... JNI]
[Dynamic-linking native method sun.reflect.NativeConstructorAccessorImpl.newInstance0 ... JNI]
[Dynamic-linking native method java.lang.Runtime.maxMemory ... JNI]
[Dynamic-linking native method java.io.FileInputStream.initIDs ... JNI]
[Dynamic-linking native method java.io.FileDescriptor.initIDs ... JNI]
[Dynamic-linking native method java.io.FileDescriptor.set ... JNI]
[Dynamic-linking native method java.io.FileOutputStream.initIDs ... JNI]
[Dynamic-linking native method java.security.AccessController.doPrivileged ... JNI]
[Dynamic-linking native method java.lang.Class.isAssignableFrom ... JNI]
[Dynamic-linking native method java.lang.System.setIn0 ... JNI]
[Dynamic-linking native method java.util.concurrent.atomic.AtomicLong.VMSupportsCS8 ... JNI]
[Dynamic-linking native method java.lang.System.setOut0 ... JNI]
[Dynamic-linking native method java.lang.System.setErr0 ... JNI]
[Dynamic-linking native method java.io.WinNTFileSystem.initIDs ... JNI]
[Dynamic-linking native method java.lang.System.mapLibraryName ... JNI]
[Dynamic-linking native method java.lang.ClassLoader.findBuiltinLib ... JNI]
[Dynamic-linking native method java.io.WinNTFileSystem.getBooleanAttributes ... JNI]
[Dynamic-linking native method java.io.WinNTFileSystem.canonicalize0 ... JNI]
[Dynamic-linking native method java.lang.ClassLoader$NativeLibrary.load ... JNI]
[Dynamic-linking native method sun.misc.Signal.findSignal ... JNI]
[Dynamic-linking native method sun.misc.Signal.handle0 ... JNI]
[Dynamic-linking native method sun.io.Win32ErrorMode.setErrorMode ... JNI]
[Dynamic-linking native method java.lang.Compiler.registerNatives ... JNI]
[Registering JNI native method java.lang.Compiler.compileClass]
[Registering JNI native method java.lang.Compiler.compileClasses]
[Registering JNI native method java.lang.Compiler.command]
[Registering JNI native method java.lang.Compiler.enable]
[Registering JNI native method java.lang.Compiler.disable]
[Dynamic-linking native method java.io.FileInputStream.open0 ... JNI]
[Dynamic-linking native method java.io.FileInputStream.readBytes ... JNI]
[Dynamic-linking native method java.io.FileInputStream.available0 ... JNI]
[Dynamic-linking native method java.lang.reflect.Array.newArray ... JNI]
[Dynamic-linking native method java.lang.Runtime.availableProcessors ... JNI]
[Dynamic-linking native method java.io.FileInputStream.close0 ... JNI]
[Dynamic-linking native method java.io.WinNTFileSystem.list ... JNI]
[Dynamic-linking native method java.io.WinNTFileSystem.canonicalizeWithPrefix0 ... JNI]
[Dynamic-linking native method sun.misc.URLClassPath.getLookupCacheURLs ... JNI]
[Dynamic-linking native method java.lang.invoke.MethodHandleNatives.registerNatives ... JNI]
[Registering JNI native method java.lang.invoke.MethodHandleNatives.init]
[Registering JNI native method java.lang.invoke.MethodHandleNatives.expand]
[Registering JNI native method java.lang.invoke.MethodHandleNatives.resolve]
[Registering JNI native method java.lang.invoke.MethodHandleNatives.getConstant]
[Registering JNI native method java.lang.invoke.MethodHandleNatives.getNamedCon]
[Registering JNI native method java.lang.invoke.MethodHandleNatives.getMembers]
[Registering JNI native method java.lang.invoke.MethodHandleNatives.objectFieldOffset]
[Registering JNI native method java.lang.invoke.MethodHandleNatives.setCallSiteTargetNormal]
[Registering JNI native method java.lang.invoke.MethodHandleNatives.setCallSiteTargetVolatile]
[Registering JNI native method java.lang.invoke.MethodHandleNatives.staticFieldOffset]
[Registering JNI native method java.lang.invoke.MethodHandleNatives.staticFieldBase]
[Registering JNI native method java.lang.invoke.MethodHandleNatives.getMemberVMInfo]
[Registering JNI native method java.lang.invoke.MethodHandle.invoke]
[Registering JNI native method java.lang.invoke.MethodHandle.invokeExact]
[Dynamic-linking native method jdk.internal.util.EnvUtils.getEnvVar ... JNI]
[Dynamic-linking native method java.io.FileOutputStream.open0 ... JNI]
[Dynamic-linking native method java.io.FileOutputStream.writeBytes ... JNI]
[Dynamic-linking native method java.io.FileOutputStream.close0 ... JNI]
[Dynamic-linking native method java.lang.ClassLoader.findLoadedClass0 ... JNI]
[Dynamic-linking native method java.lang.ClassLoader.findBootstrapClass ... JNI]
[Dynamic-linking native method java.lang.ClassLoader$NativeLibrary.find ... JNI]
[Dynamic-linking native method java.security.AccessController.doPrivileged ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.initIDs ... JNI]
[Dynamic-linking native method java.io.WinNTFileSystem.getLastModifiedTime ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.open ... JNI]
[Dynamic-linking native method sun.misc.Perf.registerNatives ... JNI]
[Registering JNI native method sun.misc.Perf.attach]
[Registering JNI native method sun.misc.Perf.detach]
[Registering JNI native method sun.misc.Perf.createLong]
[Registering JNI native method sun.misc.Perf.createByteArray]
[Registering JNI native method sun.misc.Perf.highResCounter]
[Registering JNI native method sun.misc.Perf.highResFrequency]
[Dynamic-linking native method java.util.zip.ZipFile.getTotal ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.startsWithLOC ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.getEntry ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.getEntryFlag ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.getEntryBytes ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.getEntryTime ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.getEntryCrc ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.getEntrySize ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.getEntryCSize ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.getEntryMethod ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.freeEntry ... JNI]
[Dynamic-linking native method java.util.zip.Inflater.initIDs ... JNI]
[Dynamic-linking native method java.util.zip.Inflater.init ... JNI]
[Dynamic-linking native method java.util.zip.Inflater.inflateBytes ... JNI]
[Dynamic-linking native method java.util.zip.ZipFile.read ... JNI]
[Dynamic-linking native method java.util.zip.Inflater.reset ... JNI]
[Dynamic-linking native method java.util.jar.JarFile.getMetaInfEntryNames ... JNI]
[Dynamic-linking native method java.lang.Package.getSystemPackage0 ... JNI]
[Dynamic-linking native method java.lang.ClassLoader.defineClass1 ... JNI]
[Dynamic-linking native method java.security.AccessController.doPrivileged ... JNI]
[Dynamic-linking native method java.lang.Class.isInstance ... JNI]
[Dynamic-linking native method java.lang.ProcessEnvironment.environmentBlock ... JNI]
[Dynamic-linking native method java.awt.Toolkit.initIDs ... JNI]
[Dynamic-linking native method java.awt.Insets.initIDs ... JNI]
[Dynamic-linking native method sun.awt.windows.WToolkit.initIDs ... JNI]
[Dynamic-linking native method sun.java2d.SurfaceData.initIDs ... JNI]
[Dynamic-linking native method java.awt.image.ColorModel.initIDs ... JNI]
[Dynamic-linking native method java.awt.image.IndexColorModel.initIDs ... JNI]
[Dynamic-linking native method sun.java2d.pipe.SpanClipRenderer.initIDs ... JNI]
[Dynamic-linking native method sun.java2d.pipe.Region.initIDs ... JNI]
[Dynamic-linking native method java.awt.Component.initIDs ... JNI]
[Dynamic-linking native method java.awt.AWTEvent.initIDs ... JNI]
[Dynamic-linking native method java.awt.event.InputEvent.initIDs ... JNI]
[Dynamic-linking native method sun.awt.windows.WObjectPeer.initIDs ... JNI]
[Dynamic-linking native method java.awt.Font.initIDs ... JNI]
[Dynamic-linking native method sun.reflect.NativeMethodAccessorImpl.invoke0 ... JNI]
[Dynamic-linking native method sun.java2d.Disposer.initIDs ... JNI]
[Dynamic-linking native method sun.awt.windows.WToolkit.startToolkitThread ... JNI]
[Dynamic-linking native method sun.awt.windows.WToolkit.init ... JNI]
[Dynamic-linking native method java.lang.System.identityHashCode ... JNI]
[Dynamic-linking native method sun.awt.windows.WToolkit.eventLoop ... JNI]
[Dynamic-linking native method sun.awt.windows.WToolkit.setDynamicLayoutNative ... JNI]
[Dynamic-linking native method sun.awt.windows.WToolkit.setExtraMouseButtonsEnabledNative ... JNI]
[Dynamic-linking native method java.util.zip.Inflater.end ... JNI]
[Dynamic-linking native method sun.awt.windows.WToolkit.shutdown ... JNI]

@Nazarkovsky   Apologies, the printing of the java classes created this error--I just fixed this and uploaded a new version.   Please re-download the add-in and try again.  

Dear @russ_wolfinger !

I am so thankful to you for your patience, job, professionalism, dedication, your spent time. I wish I could set 10 kudos to your post. It worked out well now! You are fantastic person! 
With my kind regards!
Michael

Nazarkovsky_0-1658838840923.jpeg

 

abmayfield

I began to encounter the same issues after upgrading both my Mac (to Ventura) and my JMP to JMP Pro 17. Now I get an error saying "java.lang.ClassNotFoundException:edu.uic.ncdm.venn.Venn" Does this mean that the original Java script being called from this UIC website is no longer functional/callable?

@abmayfield   Thanks for reporting this.   Turns out the fix for spaces in paths only works on Windows and messes things up on Apple M1.  I just uploaded a new version that should work.   btw, the java class does not need the web; that path is just the way it was named by the late Leland Wilkinson and is a tribute to him.  

abmayfield

Awesome! Worked like a charm. I was really thinking I was going to have to go on the same wild goose chase with uninstalling/reinstalling JAVA, resetting the home environment, etc. Thanks so much.

abmayfield

 @russ_wolfinger I started using this again recently with lists (multiple tables with lists of protein accession numbers), and I receive this error message on my M1 Mac: "

The symbol "fmt_list" is not defined in namespace "jg" in access or evaluation of 'jg:fmt_list' , jg:fmt_list/*###*/" It still makes a table with 0's and 1's but not the diagram itself. I had the same issue on JMP Pro 17 and 18 beta. Any clues?

@abmayfield  Thanks for reporting the issue with the Multiple Table input.   I just uploaded a fix--please download and reinstall to try it.    Alternatively, although clunky, it would also work to run the Single Table dialog on the created table with 0s and 1s.

abmayfield

Excellent! That did the trick. Thanks so much.

abmayfield

Spoke too soon! Got a strange error message when trying to use proportional area: Screenshot 2023-04-18 at 15.25.42.png

OK @abmayfield , just pushed another update.  If you would please give it a try.  

abmayfield

Perfect. This time the proportional area works for both tables with 0's and 1's AND categorical tables. Thanks so much.

Tom_MRI

Hello @russ_wolfinger and everybody else,

 

I really appreciate that you are putting in so much time and effort to provide and maintain this tool. It is quite useful, as evidenced by the many comments about people who would like to get it to work on their machine. Unfortunately, I am one of whom for which it does not work "out of the box".

 

When I try to produce the test diagram from the test data (venn6.jmp), I get the following error:

JMP1.png

 

At this point, other calculations had been attempted, yielding the extra data in "available variables", but the error occurs also with only the original data present. Reducing the number of variables to 5 and re-running without the "proportional areas" option works.

I'm running JMP 17.1.0 with Java 1.8.0 and the addin acquired the day before last from this original post. The JAVA_HOME variable is set (currently points to the 32 bit version but switching to 64 bit made no difference). The log output yields the following:

JMP3.png

(I have redacted the VennDiagram.JSL file path for privacy reasons).

All that seems to happen is that: 1. the rows get color-coded, as can be seen on the first screenshot, and 2. the "VennSector" Column gets added to the data.

 

What I have tried so far to remedy the issue:

- changed the JAVA environment variable from 64 bit to 32 bit -> no effect. Juding by the log it seems JMP has no issues finding the JRE anyway.

- re-downloaded and re-installed the addin -> no effect.

 

Any assistance in this matter would be very much appreciated. I am quite new to JMP and am pretty much out of ideas on how to get this to work. The only thing left for me would be to snoop around at line 1299 of VennDiagram.JSL to see if I find anything obviously wrong... but considering my limited knowledge of JSL it would have to be very obviously wrong, which will hardly be the case here.

 

 

@Tom_MRI    Thanks for reporting and let's see if we can get you going.   If you would please:

1. In the input table, remove all columns after "fmt".
2. Click View > Add-Ins, click Venn Diagram, then click the link for Home Folder.   In that folder, delete the two files venn_in.txt and venn_out.txt.
3. Download and reinstall the add-in (I just pushed an update that prints the pest matrix from line 1296)

4. Rerun the example 

Assuming you still see the problem, please send the log as before, in which you should now see a printout of the pest matrix as follows:

russ_wolfinger_1-1691586606399.png


Also, in the home folder, please drag venn_out.txt onto JMP.   What are its contents?   It should be as follows with the same values:

russ_wolfinger_0-1691586379438.png

 

Tom_MRI

Hi @russ_wolfinger . Wow, you are fast. Thank you for getting back to me.

 

Okay, I have:

- deleted venn_in.txt and venn_out.txt from that folder

- re-downloaded and re-installed the add-in

- restarted JMP

(modifying the input table was not necessary/possible as the re-install came with a brand new venn6.jmp, i.e. already not containing any columns after "fmt").

- re-run the test diagram (venn6.jmp)

 

The error unfortunately persits. The log file now contains the line "pest = Scriptable[];":

JMP4.png

Venn-out.txt, if simply dragged into JMP, looks like this (which I assume is due to my import settings). In a text editor it looks better:

JMP5.png

JMP6.png

 

I feel like this is probably a fundamental error in my settings somewhere, rather than anything in the script.

@Tom_MRI    Great, it does appear to be directly related to your text import settings.    The Java code appears to be working correctly and it is just a matter of importing that little table correctly.    I just uploaded another update that explicitly looks for the tab delimiters in the JSL code and should not require you to change your settings.   Please give it a try and let me know if it works.   If problems persist, please send the log.      

Tom_MRI

@russ_wolfinger 

yes, that works a treat! I'm sorry that my import settings were the cause. I really should have reset JMP to default settings before coming here, but hindsight is 20/20. Perhaps at least other users will now know to check their import settings or return them to default.

In any case: thank you very much for your lightning-fast and invaluable assistance with this issue! I can confidently say, in my 25+ years working with computers, I have never received competent tech support this quickly ever.

I salute you o7.

Best regards, Tom

MKostura

I use the Venn Diagram and have found it most useful. However, I have found two annoyances with the add-in that may or may not have been listed in threads to the JMP community.  If they have I apologize for not finding the information.  In any event, is there any way to save the Venn Diagram as a script for repeat use?  Saving the script to the data table does not work at all.  There is a generic error given as "Graph Script reported errors in log".  When I look in the log the error is listed as 

Name Unresolved: draw_counter in access or evaluation of 'draw_counter' , draw_counter/*###*/

at line 2006 in C:\Users\Username\AppData\Roaming\SAS\JMP\Addins\com.jmp.venn\VennDiagram.JSL

Secondly, as constructed, the Venn Diagram graphic cannot be placed into a dashboard view.  In my example the dashboard crashes JMP completely.  Are there ways to get around these errors?