2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2, 3  След.
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение14.11.2014, 13:27 
Аватара пользователя
longstreet в сообщении #930823 писал(а):
Вы какую книгу/источник имели здесь в виду?


pgf/tikz документацию (версия 3.0) В TeXLive напечатайте в терминале

texdoc pgf

 
 
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение14.11.2014, 14:03 
Спасибо! TeXLive у меня нет, читаю онлайн: http://ctan.uni-altai.ru/graphics/pgf/base/doc/pgfmanual.pdf.
Добротная документация, не ожидал даже!

 
 
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение14.11.2014, 15:15 
Аватара пользователя
longstreet в сообщении #930846 писал(а):
eXLive у меня нет,


У меня заняло 27 сек найти на вебе

mthelp <package>

RTFM (Read The Friendly* Manual)

* И пусть стыдно будет тому, кто подумал что-то другое

 
 
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение14.11.2014, 18:35 

(Оффтоп)

longstreet в сообщении #922301 писал(а):
Я не знаю точно, но есть же всякие модели цветов типа RGB. Может, нужно что-то проделать с этими значениями цветов, чтобы смешать два цвета "равноправно"...
Тут есть интересный нюанс: если смешать два цвета «равноправно», что можно сделать в «линейных» координатах типа RGB, CMY или XYZ покоординатным средним арифметическим, то полученный цвет не обязательно будет смотреться как средний между этими (и в смысле яркости, и в смысле насыщености, и в смысле оттенка). Если брать среднее в одной из систем координат Lab или ещё чего-то близкого, результат будет практически «правильный» (т. к. это всё равно некоторое приближение).

Поместил в оффтоп, потому что многие люди, имевшие дело с RGB, ничего плохого в том, что среднее между жёлтым и синим — это вдруг вот такой серый, не заметят. [Люди, испорченные красками, захотят зелёный, хотя равноотстоящим по оттенку будет и ещё какой-нибудь малиновый, ну и вообще пигменты могут смешиваться довольно неинтуитивно.] Тем более что такие цвета будут всегда лежать в пространстве представимых устройством, если смешиваемые лежали, а вот с «перцепционным» (как это лучше по-русски?) средним всё не так хорошо. Для подобных вашему приложений среднее в RGB — вполне нормально. (Кстати, мне тоже не нравится, когда на графиках одни линии перекрывают другие.)

 
 
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение14.11.2014, 20:10 
У меня пока типовая часть графика как-то так выходит:
Изображение

Ужасный код этого дела:

(Оффтоп)

Код:
\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}

\path [fill=lightgray] (-0.01,-0.2) rectangle (6.01,2.2); %серый фон, внутри которого будут все шкалы

\draw [thick] (0,0) -- (6,0); %нижняя шкала
\draw [thick] (0,1) -- (6,1); %средняя шкала
\draw [thick] (0,2) -- (6,2); %верхняя шкала

%засечки на нижней шкале
\draw (0, -0.1) -- (0, 0.1);
\draw (1, -0.1) -- (1, 0.1);
\draw (2, -0.1) -- (2, 0.1);
\draw (3, -0.1) -- (3, 0.1);
\draw (4, -0.1) -- (4, 0.1);
\draw (5, -0.1) -- (5, 0.1);
\draw (6, -0.1) -- (6, 0.1);

%засечки на средней шкале
\draw (0, 0.9) -- (0, 1.1);
\draw (1, 0.9) -- (1, 1.1);
\draw (2, 0.9) -- (2, 1.1);
\draw (3, 0.9) -- (3, 1.1);
\draw (4, 0.9) -- (4, 1.1);
\draw (5, 0.9) -- (5, 1.1);
\draw (6, 0.9) -- (6, 1.1);

%засечки на верхней шкале
\draw (0, 1.9) -- (0, 2.1);
\draw (1, 1.9) -- (1, 2.1);
\draw (2, 1.9) -- (2, 2.1);
\draw (3, 1.9) -- (3, 2.1);
\draw (4, 1.9) -- (4, 2.1);
\draw (5, 1.9) -- (5, 2.1);
\draw (6, 1.9) -- (6, 2.1);

%красная линия
\draw [red, thick] (2,0) -- (4,1);
\draw [red, thick] (4,1) -- (4,2);

%синяя линия
\draw [blue, thick] (3,0) -- (5,1);
\draw [blue, thick] (5,1) -- (3,2);

%синие кружочки
\draw [fill, red] (2,0) circle [radius=0.1];
\draw [fill, red] (4,1) circle [radius=0.1];
\draw [fill, red] (4,2) circle [radius=0.1];

%красные кружочки
\draw [fill, blue] (3,0) circle [radius=0.1];
\draw [fill, blue] (5,1) circle [radius=0.1];
\draw [fill, blue] (3,2) circle [radius=0.1];

\end{document}


Области пересечений в подобных случаях -- параллелограммы, понятно как искать координаты их вершин. Но нельзя ли как-то свойство иметь в области пересечения смешанный цвет (записанное Red_Herring на предыдущей странице) определить глобально? Было бы супер, хотя понимаю что овервещь хочу.

-- 14.11.2014, 20:11 --

arseniiv, очень интересные замечания! Ничего прежде не слышал про Lab, и вообще, теперь будет что гуглить. Спасибо!

 
 
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение14.11.2014, 20:33 
Честно говоря, я хотел написать что-то более полезное (непосредственно по теме всё равно нечего предложить), а получилось даже как-то сумбурно. :-) Суть как раз в том, что читатели статьи как раз вряд ли будут возражать против «линейного» смешивания хоть с помощью того же среднего в RGB, т. к. это «схематическое» применение. Другой аргумент в том, что цвет со средним воспринимаемым оттенком — это не непрерывная функция от двух других цветов, т. к. оттенки образуют что-то, гомеоморфное окружности. Ну и брать среднее всяко проще, чем преобразовывать туда, брать среднее и преобразовывать назад (что сложнее преобразования вперёд, если надо проецировать не входящие в пространство представимых в sRGB цветов на его край).

 
 
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение14.11.2014, 20:58 
Читаю вот этот пункт документации (стр. 341) -- 23.3 Blend Modes -- про предусмотренные TikZ типы смешения цветов. Предупреждают, что для многих принтеров может оказаться проблемой корректно напечатать такие вещи.

Но, например, вот этот код (Venn diagramm with PGF 3.0 blend mode) выдаёт мне ошибку:
Код:
Package pgfkeys Error: I do not know the key '/tikz/blend group' and I am going to ignore it. Perhaps you misspelled it. \begin{tikzpicture}[blend group=screen]

Что я делаю не так?

 
 
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение15.11.2014, 00:06 
Аватара пользователя
longstreet в сообщении #930985 писал(а):
%засечки на верхней шкале
\draw (0, 1.9) -- (0, 2.1);
\draw (1, 1.9) -- (1, 2.1);
\draw (2, 1.9) -- (2, 2.1);
\draw (3, 1.9) -- (3, 2.1);
\draw (4, 1.9) -- (4, 2.1);
\draw (5, 1.9) -- (5, 2.1);
\draw (6, 1.9) -- (6, 2.1);


Ну можно проще

Используется синтаксис LaTeX
\begin{tikzpicture}
\foreach \j in {0,1,...,6}
\draw (\j,1.9)--(\j,2.1);
\end{tikzpicture}


и т.д.

У меня код с диаграммами Ванна работает. Проверьте свою версию pgf (например она записана в log проецируемого док-та)

 
 
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение15.11.2014, 13:15 
Red_Herring в сообщении #931102 писал(а):
Ну можно проще

Круто, спасибо!

Red_Herring в сообщении #931102 писал(а):
Проверьте свою версию pgf (например она записана в log проецируемого док-та)

Там такая строчка:
Код:
Package: pgf 2008/01/15 v2.10 (rcs-revision 1.12)


А какая должна быть и как обновить? (У меня MikTex и Windows.)

-- 15.11.2014, 13:48 --

Попытался проапргейдить pgf согласно инструкции на StackExchange, но строчка версии не изменилась.

 
 
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение15.11.2014, 14:00 
Аватара пользователя
Я про MikTeX мало знаю. Устанавливал знакомым пару раз. Я написал все в http://dxdy.ru/post861742.html#p861742 про TeXLive, и предложил написать про MikTeX тем, кто знает. Увы, никто не откликнулся

 
 
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение15.11.2014, 14:03 
А у меня оказалась не последняя версия пакета pgf? 2, а должна быть 3?

-- 15.11.2014, 14:29 --

Согласно этой инструкции обновил все пакеты через MikTeX, теперь Package Manager изнутри себя показывает версию 3.0.0 у PGF. Но та диаграмма Венна выдаёт прежнюю ошибку.

 
 
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение15.11.2014, 14:29 
Аватара пользователя
longstreet в сообщении #931262 писал(а):
А у меня оказалась не последняя версия пакета pgf? 2, а должна быть 3?


У Вас 2.1 — практически предпоследняя (там сразу выскочила 3.0)

 
 
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение15.11.2014, 14:32 
Если в строке
Код:
\begin{tikzpicture}[blend group=screen]

убираю квадратные скобки и всё что в них -- то пример работает, но никакого смешения цветов нет.

-- 15.11.2014, 14:45 --

longstreet в сообщении #931262 писал(а):
Package Manager изнутри себя показывает версию 3.0.0 у PGF

Хотя лог файл по-прежнему выдаёт 2.1, кхм.

 
 
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение15.11.2014, 14:53 
Аватара пользователя
Сравниваем главу 21 pgfmanual 2.1 и 23 от 3.0 и видим, что в 3.0 появилась секция 23.3 Blend Modes а 21.3 стала 23.4

 
 
 
 Re: как сделать "равноправное" пересечение линий?
Сообщение15.11.2014, 14:57 
Отлично! Теперь точно понятно в чём проблема.

-- 15.11.2014, 15:17 --

Получилось запустить пример с диаграммой Венна. Использовал http://tex.stackexchange.com/a/161666.

 
 
 [ Сообщений: 31 ]  На страницу Пред.  1, 2, 3  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group