Я не знаю ни одного программного обеспечения, которое может генерировать такие диаграммы.Однако, если бы мне пришлось решать вашу проблему, я бы, вероятно, изучил возможность использования Scalable Vector Graphics (SVG) .Я думаю, что вы можете перевести DSL для RCC в SVG XML, а затем вы можете отрендерить его (возможно, в веб-браузере).Вы можете легко найти примеры в Интернете, выполнив поиск по запросу «svg venn diagram».Хорошим примером является здесь : вот диаграмма, которую я генерирую с этого сайта
, а также соответствующий код SVG (также с сайта):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg
height="150"
width="200"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<title >WIBR Venn diagram</title>
<ellipse
cx="141.795128105731"
cy="75"
id="circle2"
rx="58.2048718942687"
ry="58.2048718942687"
style="fill: gray; fill-opacity: 0.5; stroke: black; stroke-width: 1; stroke-opacity: 1" />
<ellipse
cx="67.2091969126074"
cy="75" id="circle1"
rx="67.2091969126074" ry="67.2091969126074"
style="fill: darkgray; fill-opacity: 0.5; stroke: black; stroke-width: 1; stroke-opacity: 1"/>
</svg>
Существует также инструментарий Apache для SVG под названием Batik , который должен поддерживать отображение, генерацию или манипулирование SVG.
Другой вариант - использовать TikZ& PGF с LaTeX: там у вас есть мощные макросы, которые позволяют программно размещать фигуры, а рендеринг выполняется LaTeX.Вот пример:
\documentclass[a4paper,10pt]{article}
\usepackage{tikz}
\usetikzlibrary{shapes,calc}
\begin{document}
\pagestyle{empty}
\begin{tikzpicture}
\node (TPP) {X TPP Y};
\node
[ circle,
draw,
minimum width=2cm,
label={[label distance=-0.7cm]145:X},
] (X) [right of=TPP,xshift=1cm] {};
\node
[ circle,
draw,
minimum width=1cm,
anchor=south east,
] (Y) at (X.south east) {Y};
\end{tikzpicture}
\end{document}
, который производит следующее (т. Е. Отношение RCC8 TPP):
Вы можете увидеть из кода LaTeX, что вы можетенарисуйте круг Y на юго-западе от X (X.south west
), сказав, что якорь Y также на юго-западе (anchor=south west
).Вы можете найти более сложный пример здесь и дополнительное обсуждение здесь .
Хотя это еще не алгоритм компоновки, который рисует для вас отношение RCC8, я думаюВы можете определить макрос LaTeX, который переводит отношения RCC8 в макросы PGF / TikZ.Недостатком является то, что вы должны затем скомпилировать код LaTeX.
Надеюсь, это поможет и удачи!