Как изменить визуальные аспекты оси, состоящей из дат? - PullRequest
2 голосов
/ 14 января 2020

Я читаю некоторые данные с помощью pandas и пытаюсь построить их. Теперь я хотел бы изменить визуальные аспекты меток тика оси X: изменяются yticks и xlabel, но не xticks. Я хотел бы сделать свои xticks, красные, жирные и большие, как yticks.

Но по какой-то причине код не меняет их. Что не так?

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

plt.rcParams["font.weight"] = "bold"
plt.rcParams["axes.labelweight"] = "bold"
plt.rcParams.update({'font.size': 10})

model_obs = pd.read_csv("select_obs_data2.csv", sep=',')

print(model_obs.head(4))
model_obs['correlation'] = model_obs['real_obs'].corr(model_obs['Value'])
model_obs.iloc[1:, 6] = np.nan

model_obs['bias^2'] = (model_obs['Value'] - model_obs['real_obs']) ** 2
model_obs['RMS'] = model_obs['bias^2'].mean()
model_obs.iloc[1:, 8] = np.nan
model_obs.drop(['bias^2'], axis=1, inplace=True)
model_obs.drop(['time'], axis=1, inplace=True)

fig2, ax2 = plt.subplots()
locs = "upperleft"
model_obs["date"] = pd.to_datetime(model_obs["date"])
print(type(model_obs['date']))
print(model_obs["date"].dt.month)

model_obs.plot(x='date', y='Value', figsize=(16, 7), ax=ax2, style='--', label='Model')
model_obs.plot(x='date', y='real_obs', figsize=(16, 7), ax=ax2, label='Observation')

plt.legend(loc='upper right', prop={'size': 12})
ax2.xaxis.set_tick_params(labelsize=15)
ax2.yaxis.set_tick_params(labelsize=15)
ax2.set_xlabel('Date Time', fontsize=10, fontweight='bold')
ax2.set_ylabel('Sea Level (m)', fontsize=15, fontweight='bold')
ax2.tick_params(labelcolor='r', labelsize='large', width=8)

plt.show()

image

# x axis data
# model_obs['date']
0     2019-09-01 01:00:00
1     2019-09-01 02:00:00
2     2019-09-01 03:00:00
3     2019-09-01 04:00:00
4     2019-09-01 05:00:00
5     2019-09-01 06:00:00
6     2019-09-01 07:00:00
7     2019-09-01 08:00:00
8     2019-09-01 09:00:00
9     2019-09-01 10:00:00
10    2019-09-01 11:00:00
11    2019-09-01 12:00:00
12    2019-09-01 13:00:00
13    2019-09-01 14:00:00
14    2019-09-01 15:00:00
15    2019-09-01 16:00:00
16    2019-09-01 17:00:00
17    2019-09-01 18:00:00
966   2019-10-11 07:00:00
967   2019-10-11 08:00:00
968   2019-10-11 09:00:00
969   2019-10-11 10:00:00

1 Ответ

0 голосов
/ 14 января 2020

Метки тиков не меняются, потому что они мелкие. По умолчанию tick_params() работает только на основных тиках. Есть два необязательных параметра, которые управляют этим:

  • axis : {'x', 'y', 'both'}, по умолчанию «оба», поэтому работает по обеим осям
  • which : {'major', 'minor', 'both'}, по умолчанию «главная», поэтому влияющие только на основные тики

tick_params() можно вызывать несколько раз для индивидуальной настройки визуальных аспектов x, y, основных или второстепенных тиков.

Например, для установите основные галочки красным, а второстепенные - синим:

ax2.tick_params(labelcolor='r', labelsize='large', width=8, which='major')
ax2.tick_params(labelcolor='b', labelsize='large', width=8, which='minor')

resulting tick labels

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