Как настроить метки осей, например 6,7,8,9,10,11,12,1,2,3,4,5 - PullRequest
0 голосов
/ 20 сентября 2019

Я использую модуль python matplotlib, чтобы нарисовать график, связанный с месяцем.Основные данные моего графика сконцентрированы зимой, то есть в ноябре, декабре, январе данные этих месяцев могут рисовать сплошную плоскость.

однако Когда я строю данные за 1-12 месяцев наНа карте, данные за январь находятся на левой стороне графика, а данные за ноябрь и декабрь - на правой стороне графика.Середина графика пуста.

Я хочу найти один способ изменить порядок меток оси, с порядка 1-12 до порядка 6,7,8,9,10,11,12,1,2,3,4,5, поэтому содержание моей диаграммы может отображаться посередине, а не с обеих сторон.Пожалуйста, помогите мне, большое спасибо.

1 Ответ

0 голосов
/ 24 сентября 2019

Исходя из вашего вопроса, я предполагаю, что ваши данные в настоящее время сортируются по тому месту, где каждый месяц приходится на календарный год, начинающийся в январе.

# matplotlib version 3.1.1
import matplotlib.pyplot as plt
import pandas as pd

Я создам образец кадра данных для панд на основекак вы описали свой набор данных.

data = {'month': ['January', 'February', 'March', 'April', 'May', 'June',
                   'July', 'August', 'September', 'October', 'November',
                   'December'],
        'frequency': [1000, 200, 100, 20, 10, 5, 5, 15, 25, 50, 800, 2000]}

monthly = pd.DataFrame.from_dict(data)

print(monthly)

        month  frequency
0     January       1000
1    February        200
2       March        100
3       April         20
4         May         10
5        June          5
6        July          5
7      August         15
8   September         25
9     October         50
10   November        800
11   December       2000

Приведенный выше набор данных отсортирован по календарному году, и в результате январь будет находиться в крайней левой части графика, а ноябрь и декабрь - в правой правой части.графика.

Обновив столбец month, чтобы он содержал категориальные значения, мы можем отсортировать набор данных таким образом, который наилучшим образом соответствует нашим потребностям.

# define the sort order
month_sort = ['June', 'July', 'August', 'September', 'October', 'November',
              'December', 'January', 'February', 'March', 'April', 'May']

# assign categorical values to the column
monthly['month'] = pd.Categorical(monthly['month'], month_sort, ordered=True)

# sort the dataframe by month
monthly.sort_values('month', inplace=True)

print(monthly)

        month  frequency
5        June          5
6        July          5
7      August         15
8   September         25
9     October         50
10   November        800
11   December       2000
0     January       1000
1    February        200
2       March        100
3       April         20
4         May         10

Теперь кадр данных находится внаш желаемый порядок сортировки, позволяющий отображать его в середине ноября, декабря и января.

fig, ax = plt.subplots(figsize=(12,6))
ax.bar(monthly['month'], monthly['frequency'])
ax.grid()

plt.show()

bar_plot

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