Pyplot - смещение положения тиков оси Y и его данных - PullRequest
0 голосов
/ 04 сентября 2018

Visual summary of what I want to do

Используя pyplot, как мне изменить мой график, чтобы изменить вертикальное положение моих yticks? Например. на моем графике выше я хочу переместить «Промоутер» вниз и «CDS» вверх (вместе с их «линиями» на графике).

Для приведенного выше графика мои x-данные представляют собой диапазон чисел, в то время как мои y-данные являются категоричными. Код для воспроизведения сюжета выглядит следующим образом:

import matplotlib.pyplot as plt

x_CDS = list(range(661, 668))
y_CDS = ["CDS"] * len(x_CDS)

x_RBS = list(range(649, 656))
y_RBS = ["RBS"] * len(x_RBS)

x_prom = list(range(570, 601))
y_prom = ["Promoter"] * len(x_prom)

plt.figure(figsize=(10,6))
plt.xlim(1, 3002)
plt.xlabel('Nucleotide position')

plt.plot(x_CDS, y_CDS, label='CDS')
plt.plot(x_RBS, y_RBS, label='RBS')
plt.plot(x_prom, y_prom, label='Promoter')

Примечание: линии в этом случае довольно малы, но диапазоны могут быть увеличены для удобства.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

plt.margins(y=10) должен обеспечивать отступы сверху и снизу отметок оси y. Я использую y = 10 в качестве примера, пожалуйста, настройте его по мере необходимости. Надеюсь, это то, что вы искали.

0 голосов
/ 04 сентября 2018

По умолчанию matplotlib дает около 5% полей с каждой стороны данных. Здесь, кажется, вы хотите увеличить этот запас для вертикального направления. Может быть, вы хотите 40%, т.е. plt.margins(y=0.4)?

import matplotlib.pyplot as plt

x_CDS = list(range(661, 668))
y_CDS = ["CDS"] * len(x_CDS)

x_RBS = list(range(649, 656))
y_RBS = ["RBS"] * len(x_RBS)

x_prom = list(range(570, 601))
y_prom = ["Promoter"] * len(x_prom)

plt.figure(figsize=(10,6))

plt.xlabel('Nucleotide position')

plt.plot(x_CDS, y_CDS, label='CDS')
plt.plot(x_RBS, y_RBS, label='RBS')
plt.plot(x_prom, y_prom, label='Promoter')

plt.margins(y=0.4)

plt.show()

enter image description here

Преимущество использования margins здесь вместо изменения ylim состоит в том, что вам не нужно считать категории, чтобы узнать, какое полезное значение выбрать для ограничений. Но, конечно, вы можете в равной степени изменить пределы с помощью plt.ylim(-0.8,2.8), чтобы достичь того же графика.

...