Создайте две линии на графике с помощью ползунков, чтобы обе линии изменялись в интерактивном режиме в зависимости от ползунков. - PullRequest
0 голосов
/ 23 января 2020

Для проекта я должен проверить, стоит ли вклад в новое регулирование для предотвращения террористических атак c, сравнивая R (снижение риска) и CR (снижение критического риска). Инвестиция того стоит, если R выше, чем CR. Если это не так, регулирование того не стоит. Если этот код используется, можно увидеть результат на изображении -> Output of code.

. Как видно, R зависит от переменных Lb и Ln. RCl зависит от переменных начала костной регуляции и конечной костной регуляции. Это хорошо, но проблема здесь, и, поверьте мне, я искал, но не смог ее найти, заключается в том, возможно ли создать ползунки для Lb, Ln, так что линии будут интерактивно меняться на одном графике, в зависимости от того, как вы сдвиньте ползунок для Lb или Ln (или, если это возможно, для начала и конца регулирования? Ниже вы можете увидеть код для всего этого.

Lb = 120 # baseline loss terrorism - annualized loss terrorism - how much money did terroristic attacks cost in a year
Ln = 100 # new regulation loss terrorism - Annualized new loss terrorism - (say that first it was 120 million (baseline)),
# and now we want to reduce the loss to 100 with a new regulation)) 
CR = 20 # Cost regulation


R = (Lb-Ln)/Lb # Risk reduction factor 

CRl = [] #cost regulation list
begincostregulation = 0
endcostregulation = 120  #If you want to look at different r's and RC's you have to specifiy a range of regulation cost
#for example, what will my R be with an investment of 1 million, 2 million etc, but this is just to make a list of chosen values)
for i in range(begincostregulation,endcostregulation):
    CRl.append(i)

RCl = [x/Lb for x in CRl ] # Creates a list for the critical risk reduction (minimum risk reduction to exceed the cost)

Rl = [R for x in RCl] # Creates a list the same length as RCl , with the R as values.




datadf = {'R': Rl, 'RC':RCl}

df = pd.DataFrame(data=datadf) #makes a dataframe out of the Rl and RCl

plt.plot('R', data=df)
plt.plot('RC', data=df)

plt.xlabel('Budget')
plt.ylabel('Risk reduction percentage')
plt.legend()

Я сам несколько раз пробовал. Например, я использовал этот код:

%matplotlib inline
from ipywidgets import interactive
import matplotlib.pyplot as plt
import numpy as np

def f(m, b):
    plt.figure(2)
    x = np.linspace(-10, 10, num=1000)
    plt.plot(x, m * x + b)
    plt.ylim(-5, 5)
    plt.show()

def g(m, b):
    plt.figure(2)
    x = np.linspace(-10, 10, num=1000)
    plt.plot(x, m * x + b)
    plt.ylim(-5, 5)
    plt.show()    

interactive_plot= interactive(f, m=(RCl), b=(Rl))

output = interactive_plot.children[-1]
output.layout.height = '350px'
interactive_plot

Это дает мне вывод на изображении Output generated

Здесь m - это Критический риск, а b - это фактор снижения риска. Это не то, что Я хочу, и это дает мне только одну линию. Я хочу увидеть, где эти линии пересекаются, так что можно увидеть, в какой момент сумма денег, вложенная в регулирование, больше не стоит. Для этого нужно два линии на одном графике, и я не знаю, как это сделать.

tldr: создать график с двумя линиями (R и CR), которые можно изменить в интерактивном режиме, чтобы линии изменялись в зависимости от на ползунки (измените Lb или Ln), если это возможно, это также может помочь, если в ползунке можно изменить начальную и конечную регуляцию.

Заранее спасибо, и я надеюсь, что кто-то может помочь. Это было бы удивительно!

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