оверлейное взаимодействие, визуальное в python - PullRequest
0 голосов
/ 25 февраля 2020

Я хочу визуализировать взаимодействие между двумя данными. Оригинал (зеленый) и прогноз (коричневый). Длина верхней строки составляет от 200 до -20, а нижней - от -20 до 200.

enter image description here

Для приведенной выше таблицы я хочу визуализировать в следующем формате

enter image description here

код, который я пробовал до сих пор

    def newline(p1, p2, color='black'):
      ax = plt.gca()

   fig, ax = plt.subplots(1,1,figsize=(5,5), dpi= 60)
   ax.hlines(y=1, xmin=-20, xmax=200, color='black', alpha=0.7)
   ax.hlines(y=1.1, xmin=-20, xmax=200, color='black', alpha=0.7)


   plt.rcParams['xtick.bottom'] = plt.rcParams['xtick.labelbottom'] = True
   plt.rcParams['xtick.top'] = plt.rcParams['xtick.labeltop'] = True
   ax.yaxis.set_visible(False)
   plt.box(False)        

1 Ответ

0 голосов
/ 28 февраля 2020
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd

def newline(p1, p2, color='black'):
ax = plt.gca()

df = pd.read_excel('visual.xlsx', sheet_name='Sheet2')
prediction_list = df['prediction'].tolist()
originale_list = df['original'].tolist()
result_prediction = []
result_original = []

for i in range(len(prediction_list)):
temp = []
test = prediction_list[i].split('&')
for j in range(len(test)):
temp = []
temp.append(200 - int(test[j].split(':')[0]))
temp.append(int(test[j].split(':')[1]))
result_prediction.append(temp)

for i in range(len(originale_list)):
temp = []
test = originale_list[i].split('&')
for j in range(len(test)):
temp = []
temp.append(200 - int(test[j].split(':')[0]))
temp.append(int(test[j].split(':')[1]))
result_original.append(temp)

fig, ax = plt.subplots(1,1,figsize=(20,5), dpi= 60)
ax.hlines(y=1, xmin=200, xmax=-20, color='black', alpha=0.7)
ax.hlines(y=2, xmin=200, xmax=-20, color='black', alpha=0.7)                                                                                                                                                                                                                                                     -20')

for i in range(len(result_prediction)):
plt.plot(result_prediction[i], [2, 1], color='brown')
for i in range(len(result_original)):
plt.plot(result_original[i], [2, 1], color='green')

plt.rcParams['xtick.bottom'] = plt.rcParams['xtick.labelbottom'] = True
plt.rcParams['xtick.top'] = plt.rcParams['xtick.labeltop'] = True
ax.yaxis.set_visible(False)
plt.box(False)

plt.savefig('test.png')
plt.show()

Это вам поможет.

Спасибо

...