Комментарии 50
мне бывает нужно, чтобы 2 графика имели одинаковый масштаб по x и y, при этом размеры axes у них в см одинаковые, при этом сам размер картинки тоже одинаковый. В excel такое сделать невозможно, только если скопировать картинку и туда вставить новые данные и молиться, чтобы ничего не сдвинулось. в matplotlib хоть и есть кое какой инструмент, приходится подбирать и писать громоздкую обертку. пока другие работают дальше и не парятся, я борюсь за красоту графиков
Не понял про Excel, там можно установить числами ширину объектов, мин-макс осей, шаг основных-вспомогательных делений и т.п. Или вы о том, что это приходится каждый раз снова вводить, а сохранить в шаблоне как-то мудренно?
в matplotlib хоть и есть кое какой инструмент, приходится подбирать и писать громоздкую обертку.
Если код по ссылке https://matplotlib.org/stable/gallery/axes_grid1/demo_fixed_size_axes.html решает вашу задачу, то разве от громоздкий? Ну и несколько еще вариантов тут: https://stackoverflow.com/questions/44970010/axes-class-set-explicitly-size-width-height-of-axes-in-given-units
пока другие работают дальше и не парятся, я борюсь за красоту графиков
Как это знакомо! Могу только поддержать и посочувствовать. Все эти инструменты совершенно не заточены под реально красивые визуализации. Максимум есть несколько симпатичных преднастроенных вариантов, которые не поддаются никакой кастомизации.
Я так переводил отчёт большой из экселя в matplitlib. Код (ужасный! кривой! не поддающийся рефакторингу), нужный для красоты графиков, занимал 80% обьема.
1) рисуешь 6*3
2) Убираешь 3*3
Как по мне, хорошее приложение не состоит из HTML'я целиком, а опирается на всю мощь нативного кода под капотом. Например, обращается к EDID. (Вот пример для использования в Windows-сборках, интересно, есть ли кросс-платформенный эквивалент). Один раз пришлось делать нечто отдалённо похожее, в CSS я использовал нестандартную единицу, привязанную к физическим размерам, а в скриптах — функцию, опирающуюся на kx
и ky
, значения которым присваивал из нативной части при запуске приложения.
Только вот веб-приложению выполнить нативный код никто не даст
Да еще и EDID бывает кривой. Лучше уж спрашивать у ОС, у них свои костыли на этот случай есть.
Да, бывает, что и такое надо кровь из носу. Например, приложение не проходит чёртову цензуру в AppStore. Там и тригонометрию вспомнишь, и всё на свете.
Про тригонометрию это не совсем шутка. Я решал такую задачу: в чистом веб-аппе сделать строго ландшафтную ориентацию, независимо от поворота и блокировки экрана в ОС. При всей простоте постановки задачи закончилось тем, что я внутрь пол-учебника геометрии запихал. (Деталей уже не вспомню, это были времена iPhone 4).
У меня всегда window.devicePixelRatio == 1. А еще точнее, текущий зуум страницы / 100.
Поздравляю, у вас логический пиксель равен физическому.
В том то и дело, что нет. Ну не может на 3 разных монитора размер пикселей быть одинаковым.
Физический размер к этому показателю не имеет отношения. Значение 1 означает, что выбранное разрешение для видяхи (логистический пиксель) в точности соответствует разрешению дисплея (физический пиксель — который светится). А отличаться от 1 оно будет в том случае, если на дисплее, скажем, 1024х768 выводить изображение другого разрешения
Я этого и имел ввиду. Но это никак не поможет нарисовать квадрат с точными физическими размерами.
Значение 1 означает, что для CSS media query реальное разрешение экрана будет применяться также и для квери. Например, для типичного телефона с разрешением 1080x1920 devicePixelRatio == 2.75, и CSS будет воспринимать это разрешение как 393x721 и соответственно показывать мобильный вариант страницы. Ничего общего с физическими пикселями и дисплеем это значение не имеет
Осталось узнать физический размер физического пикселя. И поскольку он будет в линиях (1/12 пункта pt, который 1/12 от дюйма, но это неточно), ещё нужно будет умножить на магическую константу, которая в Китае в пи раз выше, чем в Европе.
Свойство devicePixelRatio - это отношение количества реальных пикселей на пиксель в CSS. Если оно больше 1, то мы можем понять, что у нас экран с большой плотностью пикселей. Это может быть полезно знать, чтобы пользователям грузить картинки или рендерить канвас в высоком разрешении. Но это не имеет никакого отношения к физическому размеру пикселей. Количество и размер - вещи перпендикулярные. Поэтому в контексте задачи это свойство никак не поможет узнать реальный размер элементов.
Скорее https://developer.mozilla.org/ru/docs/Web/CSS/length#mozmm, но 1) было 2) только в Фоксе 3) и не прижилось 🤷♂️
Краткое содержание:
Как точно нарисовать квадрат 3х3? Попросить пользователя линейкой измерить диагональ и ввести в поле. А мы знаем супер формулу.
В общем математика - сила, а статья... ну такая.
Попросить пользователя вспомнить/погуглить самую известную характеристику дисплея и ввести в поле как привязку реального мира к виртуальному. Это другое
Осталось верить, что производитель не округлил 21.05 дюймов до 21 или 20.98 до 21.
На фото можно заметить, что метровая лента на Sony Xperia чуть выходит правой линией разметки третьего см за рисунок, а на фото других смартфонов - нет.
Тогда вопрос, а решена ли задача вообще и нужен ли такой пердоллинг, когда можно попросить пользователя приложить линейку к экрану и ткнуть мышкой в две точки?
Так и не увидел в статье ни одного трёхсантиметрового квадрата.
Что помешало привести в статье результат - тот самый красный квадрат 3 см?
А ваш "Его величество код" нарисовал у меня вот такое.
В общем, не зачёт.
"Мысью по древу", "мысью"...
А можно ссылку?
А для принтеров в далёком 20 веке придумали постскрипт
Как этот код отработает с экраном 2×2 см?
И другие анекдоты из серии тестировщика в баре
Еще про совместимость с Internet Explorer 6 вообще забыли, где полифиллы на всякие флексы и клампы?
А как на нём отработает пользователь? 🙂
На мой взгляд отличная подготовка для создания баг реквеста в проектах Firefox и Chrome или в чем вы тестировали.
А на элт это все сломается, потому что там есть такое понятие, как "видимая область"
Если правильно измерить диагональ, то не сломается. Но я и на LCD дисплей измерял бы линейкой. Мало ли что пишут на этикетках.
А кто будет измерять? Пользователь перед входом на сайт?
монитором в 24 дюйма может быть что-то с реальной матрицей 23,6, 23,8, 24, 24,5 дюймов
У меня в качестве дисплея подключен ЭЛТ монитор (проектор, телевизор). Вопрос какого размера у меня квадрат? Квадрат ли он?
ИМХО, стать я ни о чем.
Если есть ширина и высота, в чём проблема по той же теореме Пифагора диагональ вычислить? Зачем поле ввода городить. Я, например, не скажу диагональ ни телефона, ни монитора слёту... Вижу, что я не догоняю чего-то, но в вебе пользователь не будет тыкать лишнего, всё само должно работать...
Ну если ставить задачу, как распечатать на принтере - то если нарисовать в Фотошопе или любом сапре квадратик 3 на 3, то он и при печати окажется 3 на 3, если выставить масштаб 100%, то размер совпадет с реальным, по крайней мере в фотошопе я сама печатала и сравнивала. Случай с печатью совсем притянут за уши, чтобы городить такое в вебе..
Как нарисовать квадрат 3 × 3 см на веб-странице*