Как уменьшить ось Y в Matplot с таким же расстоянием - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу 38 в месте 36, но расстояние должно быть таким же, График будет выглядеть так, как будто исчезнут горбы прямых линий. Я использовал библиотеку matplot enter image description here

# -*- coding: utf-8 -*-
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
s=['05/02/2019', '06/02/2019', '07/02/2019', '08/02/2019', '09/02/2019', '10/02/2019', '11/02/2019', '12/02/2019', '13/02/2019', '20/02/2019', '21/02/2019', '22/02/2019', '23/02/2019', '24/02/2019', '25/02/2019']
df[0]=['38.02'
,'33.79'
,'34.73'
,'36.47'
,'35.03'
,'33.45'
,'33.82'
,'33.38'
,'34.68'
,'36.93'
,'33.44'
,'33.55'
,'33.18'
,'33.07'
,'33.17'
]
# Data for plotting
fig, ax = plt.subplots(figsize=(17, 2))
for i,j in zip(s,df[0]):
    ax.annotate(str(j),xy=(i,j+0.8))
ax.plot(s, df[0])
ax.set(xlabel='Dates', ylabel='Latency',
       title='Hongkong to sing)
ax.grid()
#plt.yticks(np.arange(min(df[p]), max(df[p])+1, 2))
fig.savefig("test.png")
#plt.show()

1 Ответ

0 голосов
/ 28 февраля 2019

Я не совсем уверен, что это то, что вы ищете, но вы можете явно отрегулировать y-пределы, чтобы изменить масштаб, то есть

ax.set_ylim([ax.get_ylim()[0], 42])

, который устанавливает только верхнюю границу, оставляянеизменный нижний предел даст вам Y-axis limit control (upper)

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

ax.set_ylim([22, 52])

даст вам что-то похожееY-axis limit control (both)

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


Редактировать - Вот полный требуемый код:

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
df = pd.DataFrame()
s=['05/02/2019', '06/02/2019', '07/02/2019', '08/02/2019', 
   '09/02/2019', '10/02/2019', '11/02/2019', '12/02/2019', 
   '13/02/2019', '20/02/2019', '21/02/2019', '22/02/2019', 
   '23/02/2019', '24/02/2019', '25/02/2019']
df[0]=['38.02','33.79','34.73','36.47','35.03','33.45',
       '33.82','33.38','34.68','36.93','33.44','33.55',
       '33.18','33.07','33.17']
# Data for plotting
fig, ax = plt.subplots(figsize=(17, 3))
#for i,j in zip(s,df[0]):
#    ax.annotate(str(j),xy=(i,j+0.8))

ax.plot(s, pd.to_numeric(df[0]))
ax.set(xlabel='Dates', ylabel='Latency',
       title='Hongkong to sing')
ax.set_xticklabels(pd.to_datetime(s).strftime('%m.%d'), rotation=45)
ax.set_ylim([22, 52])
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...