Можно ли сделать графики разного размера для графиков? - PullRequest
0 голосов
/ 29 июня 2011

Допустим, у меня есть график с осью с 25 тиками, и я хочу сделать каждый пятый тик (0, 5, 10, 15, 20, 25) больше, чем другие тики, чтобы упростить чтение графика.(На этих галочках уже есть числовые метки, а на других нет, но читать все еще довольно неудобно ...) Возможно ли это?А что если у меня, скажем, 27 тиков вместо 25?

E: Немного больше информации:

Я на самом деле редактирую не слишком комментированный сценарий, созданныйболее опытный программист (а я не очень опытный).Программа рисует цветовую карту (подразумевая деформацию в координатной точке (x, y)) в соответствии с заданными данными ... э, я должен признать, что я не понимаю всего, что сказано в коде.Но есть часть, в которой нарисовано запрашиваемое поле деформации.

        # Strain field on background
        fig = mpl.figure(1,figsize=(6,5),facecolor='w',edgecolor='k')
        mpl.clf()
        ax1 = fig.add_axes([0.5*(1-0.50*ratio)+0.05, 0.45, 0.50*ratio, 0.50])
        mpl.contourf(strainY.T * 100,50) # Into percents
        mpl.xlim(0,x-1)
        mpl.ylim(0,y-1)
        mpl.gca().invert_yaxis()
        yt = np.linspace(0,y-1,len(vHeight)+1)
        locs, labels = mpl.yticks(yt, vHeight, fontsize=9)
        xt = np.linspace(0,x-1,len(vWidth)+1)
        locs, labels = mpl.xticks(xt, vWidth, fontsize=9)

yt и xt означают специальные векторы, которые используются для размещения галочек.Из-за некоторого раздражающего масштабирования (от пикселей (?) До других измерений) и различной длины осей, они требуют некоторой работы ... в любом случае, в результате получается двухмерная карта деформаций, в которой отмечены метки с постоянными пробелами ...

Спросите больше, если вам нужна дополнительная информация, я в замешательстве, что не знаю, какая информация необходима.

... то, что я понял ниже в комментариях и документации, contourf () соответствует plot ().Так set_major_locator должен работать?Хотя я помню, что однажды попробовал, не получилось ... Я могу попробовать еще раз в копии этого сценария.

1 Ответ

2 голосов
/ 29 июня 2011

Вы ищете основные и второстепенные тики? Я предполагаю, что вы ищете следующий пример:

http://matplotlib.sourceforge.net/examples/pylab_examples/major_minor_demo1.html#pylab-examples-major-minor-demo1

Редактировать Я адаптировал ваш пример, чтобы его можно было запустить. В следующий раз, пожалуйста, опубликуйте минимальный пример, который кто-то другой может скопировать / вставить / выполнить.

С сайта, указанного выше, я скопировал форматирование оси. Если я правильно понимаю ваш вопрос, вы хотите установить отметки в произвольных местах. Для этого мы можем использовать FixedLocator со списком. Если у вас есть постоянные интервалы между тиками, используйте MultipleLocator. В matplotlib.ticker есть множество других локаторов ...

Вы сможете запустить приведенный ниже код и, надеюсь, получить то, что хотите! : -)

import matplotlib.pyplot as mpl
import numpy as np
from matplotlib.ticker import MultipleLocator, FormatStrFormatter, FixedLocator

majorLocator   = FixedLocator([0,15,19,40,60,99])
majorFormatter = FormatStrFormatter('%d')
minorLocator   = MultipleLocator(5)

ratio = 1
strainY = np.zeros((100,100))
x = 100
y = 100
vHeight = np.arange(0,100,5)
vWidth = np.arange(0,100,5)

# Strain field on background
fig = mpl.figure(1,figsize=(6,5),facecolor='w',edgecolor='k')
mpl.clf()
ax1 = fig.add_axes([0.5*(1-0.50*ratio)+0.05, 0.45, 0.50*ratio, 0.50])
mpl.contourf(strainY.T * 100,50) # Into percents
mpl.xlim(0,x-1)
mpl.ylim(0,y-1)
mpl.gca().invert_yaxis()
yt = np.linspace(0,y-1,len(vHeight)+1)
locs, labels = mpl.yticks(yt, vHeight, fontsize=9)
xt = np.linspace(0,x-1,len(vWidth)+1)
locs, labels = mpl.xticks(xt, vWidth, fontsize=9)

ax1.xaxis.set_major_locator(majorLocator)
ax1.xaxis.set_major_formatter(majorFormatter)
ax1.xaxis.set_minor_locator(minorLocator)

mpl.show()

Если это не то, что вам нужно, не могли бы вы изменить пример кода на что-то, что работает, и, возможно, опубликовать набросок, что вам нужно?

...