Matplotlib: установка очень большого размера figsize вызывает скрытие xtick и yticks - PullRequest
0 голосов
/ 04 августа 2020

Я хочу построить двойной график. Я обнаружил, что когда я устанавливаю figsize=(20,10), xtick и ytick видны и нормальны (это то, что я хочу) в качестве первого графика ниже, однако, когда только меняю figsize на figsize=(200,100), xtick и ytick исчезают как второй сюжет ниже. Кто-нибудь может сказать мне, почему это произошло и как это решить?

From matplotlib.pyplot import *     
figure(figsize=(20,10))
X = range(10)
Y1 = array([100, 100, 100, 100, 100, 100, 100, 100, 100, 100])
Y2 = array([23.9218945 , 25.70771409, 33.56520973, 16.01795171, 11.52174436,
               14.53292673, 27.88619997,  1.4717423 ,  2.78468413, 13.70871468])
        
    
bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
tight_layout()
show()

enter image description here

From matplotlib.pyplot import *      
figure(figsize=(200,100))
X = range(10)
Y1 = array([100, 100, 100, 100, 100, 100, 100, 100, 100, 100])
Y2 = array([23.9218945 , 25.70771409, 33.56520973, 16.01795171, 11.52174436,
       14.53292673, 27.88619997,  1.4717423 ,  2.78468413, 13.70871468])


bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
tight_layout()
show()

введите описание изображения здесь

Ответы [ 2 ]

2 голосов
/ 05 августа 2020

Я наконец нашел причину и решение. Причина в том, что если для figsize задано большое значение. xticks и yticks будут слишком маленькими, чтобы их можно было увидеть. Так что на самом деле он не исчезает, это потому, что шрифты слишком маленькие.

Решение заключается в изменении fontsize из xticks и yticks

From matplotlib.pyplot import *      
figure(figsize=(200,100))
X = range(10)
Y1 = array([100, 100, 100, 100, 100, 100, 100, 100, 100, 100])
Y2 = array([23.9218945 , 25.70771409, 33.56520973, 16.01795171, 11.52174436,
       14.53292673, 27.88619997,  1.4717423 ,  2.78468413, 13.70871468])


bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
 


xticks(fontsize =40)
yticks( fontsize =40)

show()
0 голосов
/ 05 августа 2020

Это не проблема Matplotlib, это скорее проблема остроты зрения.

Ваша фигура буквально 5 × 2,5 метра, когда вы размещаете этот рекламный щит на удобном для просмотра расстоянии, чтобы он умещался в в центре поля зрения, очень маловероятно, что вы сможете различить буквы на этикетках, которые имеют примерно физические размеры букв, которые вы сейчас читаете на экране.

Я сохранил вашу фигуру в PDF формат, а позже я открыл PDF-файл в средстве просмотра, сначала с неизвестным уровнем масштабирования, при котором вся страница умещается на экране, а затем при уровне масштабирования 100% (так что, несмотря на проблемы с dpi, мы видим, по существу, небольшую деталь рисунка - помните, фигура составляет примерно 5,0 м на 2,5 м, экран компьютера составляет примерно 0,3 м на 0,2 м - в реальном масштабе).

Здесь я размещаю два скриншота, учетная запись, что SO дополнительно изменяет размер изображений, поэтому при просмотре всей страницы вы не увидите ничего, кроме полос, а когда вы откроете изображение в новой вкладке и go 100% вы поймете, что в границах изображения есть несколько насекомых…

zoom to fit page on screen

введите описание изображения здесь

Дополнительное замечание

Кто-то может задаться вопросом «Что это за доисторический c вид интерфейса, который вы использовали?» .

Ну, раньше я пробовал с evince, который выбрал уровень масштабирования и не дал мне его изменить! и попробовал также mupdf, который открыл файл и полностью заблокировал X, пока я не переключился на виртуальную консоль, чтобы убить его.

С другой стороны, доистори c xpdf открыли файл без сбоя, и позвольте мне изменить уровень масштабирования моего контента. Престижность xpdf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...