Как масштабировать и настраивать диапазон осей в matplotlib? - PullRequest
0 голосов
/ 23 марта 2020

Я новичок в области визуализации данных, поэтому, пожалуйста, потерпите меня. Я пытаюсь создать график данных, который описывает различные атрибуты набора данных в фильмах блокбастеров. Ось X будет годом MOV ie, а ось Y будет всемирной. Сейчас в некоторых фильмах этой категории более миллиарда, и кажется, что моя ось y перегружена, поскольку она полностью блокирует числа и становится неразборчивой. Вот то, что я имею до сих пор:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.read_csv('blockbusters.csv')
fig, ax = plt.subplots()
ax.set_title('Top Grossing Films')
ax.set_xlabel('Year')
ax.set_ylabel('Worldwide Grossing')

x = df['year'] #xaxis
y = df['worldwide_gross'] #yaxis

plt.show()

Любые советы о том, как уменьшить это? В идеале это может быть представлено в масштабе 10. Спасибо заранее!

1 Ответ

1 голос
/ 23 марта 2020

Вы можете попробовать логарифмировать c scaling:

ax.set_yscale('log')

Возможно, вы захотите вручную установить отметки на оси Y, используя

ax.set_yticks([list of values for which you want to have a tick])
ax.set_yticklabels([list of labels you want on each tick]) # optional

Другой способ приблизиться к этому ранжировать фильмы (какой брутто - самый высокий, второй по величине, ...), то есть по оси Y вы должны построить

df['worldwide_gross'].rank()

Редактировать: как вы указали, можно также проверить dtypes для убедитесь, что данные являются числовыми. Если нет, используйте .astype(int) или .astype(float) для преобразования.

...