Python манипулирует осью (x и y) обновления - PullRequest
0 голосов
/ 09 апреля 2019

мы измеряем радиус по всему устройству (каждый градус, 360 точек), который составляет около 148 мм.Оно должно быть между 146 и 150.

Если вы наносите данные с соответствующими пределами, вы получаете это: CirclPlot

Мне нравится менять ось, которая между -145 и 145 мал, а между 145-150 / -145 - -150 велика.Таким образом, я могу видеть измеренное значение приятно между пределами.

Возможно ли это с питоном?

import matplotlib.pyplot as plt
import matplotlib.scale as mscale
import pandas as pd

#read CSV

EBRData = pd.read_csv('C://Users/vanderey/Documents/MATLAB/EBRTest2.csv', header = 0)

# Define data

Dates = EBRData['Date']
Rx = EBRData['xCoat']
Ry = EBRData['yCoat']
RLSLx = EBRData['xCoat_LSL']
RLSLy = EBRData['yCoat_LSL']
RUSLx = EBRData['xCoat_USL']
RUSLy = EBRData['yCoat_USL']


#Create plot

my_dpi=96
plt.figure(figsize=(480/my_dpi, 480/my_dpi), dpi=my_dpi)

plt.plot(Rx, Ry, color='blue', marker='.', linewidth=1, alpha=0.4)
plt.plot(RLSLx, RLSLy, color='red', marker='.', linewidth=1, alpha=0.4)
plt.plot(RUSLx, RUSLy, color='red', marker='.', linewidth=1, alpha=0.4)


plt.title('EBR')
plt.show()

1 Ответ

0 голосов
/ 11 апреля 2019

Если вы хотите показать радиус , я бы также рекомендовал рассчитать R из x и y измерений и поместить их в график вместе с целевыми пределами.
Вы можете сделать это, рассчитав полные полярные координаты из ваших значений x / y

phi = np.arctan2(df.yCoat, df.xCoat)
R = pd.DataFrame(np.sqrt(df.xCoat.values**2 + df.yCoat.values**2), columns=['R'], index=phi)

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

phi = np.linspace(-np.pi, np.pi, 360, endpoint=False)

Однако это может быть нанесено просто как обычный линейный график с двумя указанными предельными линиями, такими как

R.plot()
plt.hlines(146, -np.pi, np.pi, 'k')
plt.hlines(150, -np.pi, np.pi, 'k')

enter image description here

или, например, в виде полярной диаграммы

f = plt.figure()
ax = f.add_subplot(111, projection='polar')
ax.set_rlim(144, 152)
plt.plot(R, 'b.-')
ax.fill_between(np.linspace(-np.pi, np.pi, 360), 140, 146, color='gray')
ax.fill_between(np.linspace(-np.pi, np.pi, 360), 150, 160, color='gray')

enter image description here

Чтобы показать образцы вне желаемого диапазона, вы можете просто добавить, например,

plt.plot(R[R<146], 'r.')
plt.plot(R[R>150], 'r.')

, чтобы сразу увидеть, есть ли проблема:

enter image description here

...