Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
3 years ago
Solved

Power BI Slicer as What-If parameter in python script

Hi all,

 

I have a Matplotlib plot in Power BI Python Script. I have created a sample dataset as below.

I am looking to apply a slicer instead of hard coding the line 

 

 

 

 

tol = 15 #default tolerance

 

 

 

 

in the python script below.

How can I get this to work. Thanks.

 

 

 

 

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

def dist(x,y):
    p1=np.array([0,0])
    p2=np.array([100,100])
    p3=np.array([x,y])
    return abs(np.cross(p2-p1,p3-p1)/np.linalg.norm(p2-p1))

# define X and y
np.random.seed(10)
x = np.arange(0,100)
y = np.random.randint(0,100,100)
df = pd.DataFrame(dict(x=x, y=y))

tol = 15 #default tolerance
max_dist = dist(0,tol)
df["within_boundary"] = df.apply(lambda row: dist(row["x"], row["y"])<=max_dist, axis=1)

# plot definition
fig = plt.figure(dpi=100,figsize=(8,8))
ax = fig.subplots(1)
plt.subplots_adjust(bottom=0.25)
plt.xticks(np.arange(0,101,10))
plt.yticks(np.arange(0,101,10))
plt.grid(True)
plt.xlim([0,100])
plt.ylim([0,100])

percentage = df['within_boundary'].sum() / len(x)
figtext = plt.figtext(0.5,0.01, f"{percentage:.1%} in Spec", ha="center", va="center", fontsize=18, bbox={"facecolor":"grey", "alpha":0.5})

p0 = ax.scatter(x,y,c=df["within_boundary"]) # points
p1 = ax.plot([0,100],[0,100],'-',color="red")  # middle line
p2, = ax.plot([0,100-tol],[tol,100],'--',color="black")  # upper line
p3, = ax.plot([tol,100],[0,100-tol],'--',color="black")  # lower line
plt.show()

 

 

TomMartens 

 

1 Reply