Matplotlib: персонализировать ось X - PullRequest
1 голос
/ 08 января 2020

У меня есть результаты вычислений, и я пытаюсь построить их с помощью персонализированной оси X.

import numpy as np
import math
import matplotlib.pyplot as plt

maxPar = 100
minPar = 6
step = 1
parameterList = np.arange(minPar, maxPar, step)
footprint = np.ones(parameterList.size)

for parameter in parameterList:
    pl = 20*math.log10(parameter) + 28.0 + 22*math.log10(math.sqrt(200**2 + math.fabs(8.5)**2))
    footprint[ np.where(parameterList == parameter)[0][0] ] = 30+25+2.15 - pl

plt.plot(parameterList, footprint)
plt.xticks(np.arange(min(parameterList), max(parameterList), 4.0))
plt.margins(0, x=True)
plt.show()

plot

Моя цель это иметь ось X со шкалой 10-20-30 -....- 90-100, но я хочу, чтобы 6 в начале. Если это невозможно, я бы хотел по крайней мере 6 в начале графика и 100 в конце.

1 Ответ

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

Проверьте это решение,

import numpy as np
import math
import matplotlib.pyplot as plt

maxPar = 100
minPar = 6
step = 1
parameterList = np.arange(minPar, maxPar, step)
footprint = np.ones(parameterList.size)

for parameter in parameterList:
    pl = 20*math.log10(parameter) + 28.0 + 22*math.log10(math.sqrt(200**2 + math.fabs(8.5)**2))
    footprint[ np.where(parameterList == parameter)[0][0] ] = 30+25+2.15 - pl

plt.plot(parameterList, footprint)
plt.xticks(np.arange(min(parameterList), max(parameterList), 4.0))
plt.margins(0, x=True)
plt.xticks([6] + list(np.arange(10,110,10)))    ##### Add this line ####
plt.show()

Вывод:

enter image description here

Подробнее об использовании matplotlib можно узнать здесь, https://matplotlib.org/api/pyplot_api.html

Обновление на основе вопроса в комментарии:

import numpy as np
import math
import matplotlib.pyplot as plt

maxPar = 100
minPar = 6
step = 1
parameterList = np.arange(minPar, maxPar, step)
footprint = np.ones(parameterList.size)

for parameter in parameterList:
    pl = 20*math.log10(parameter) + 28.0 + 22*math.log10(math.sqrt(200**2 + math.fabs(8.5)**2))
    footprint[ np.where(parameterList == parameter)[0][0] ] = 30+25+2.15 - pl

plt.plot(parameterList, footprint)
plt.margins(0, x=True)
x = [0.6] + list(np.arange(10,110,10))
plt.xticks( x , [str(i) for i in x])

Вывод:

enter image description here

...