Suppose I have the following df:
df = pd.DataFrame({"call 1": ['debit card','bond',np.nan], "call 2": ['credit card','mortgage','spending limit'], "call 3":['payment limit',np.nan,np.nan]}) which gives:
call 1 call 2 call 3 0 debit card credit card payment limit 1 bond mortgage NaN 2 NaN spending limit NaN I want to make a bubble chart such that each bubble presents the columns. So in the example above I want to plot 3 bubbles representing call 1, call 2 and call 3. On each bubble I want to present the values as well, for instance the bubble for call 1 includes the values debit card and bond as its legend. Finally the size of each bubble would be equal to the length of non-null values of each column, I've calculated that as:
size = [] for column in df: size.append(df[column].notna().sum()) #output: [2,3,1] I wonder how one would make such bubble chart? note that this type of chart has no x or y value. So I'm not sure how to use matplotlib / seaborn /etc
the outcome should look like the following: 
My very primitive way of doing this is as follow (using brute force):
test = pd.DataFrame({'calls':['call 1','call 1','call 2', 'call 2', 'call 2', 'call 3'], 'size':[2,2,3,3,3,1], 'y':[1,1,1,1,1,1], 'x':[1,1.1,2,2.1,2.2,3], 'vals': ['debit card', 'bond', 'credit card', 'mortgage', 'spending limit', 'payment limit']}) fig = px.scatter(test, x="x", y="y", size="size", color="calls", hover_name="calls", hover_data=["vals"], log_x=False, size_max=60) fig.show() where each point is a bubble - and I had to enforce the locations so I can see the labels. Surely, my method is not very useful.
