docstr: Calculates and plots the distribution of shapley values of each feature, for each treatment group.
  Skips the calculation part if shap_dict is given.
  
  Args:
      shap_dict (optional, dict): a dict of shapley value matrics. If None, shap_dict will be computed.
docstr_tok: ["Calculates","and","plots","the","distribution","of","shapley","values","of","each","feature",",","for","each","treatment","group",".","Skips","the","calculation","part","if","shap_dict","is","given",".","Args",":","shap_dict","(","optional",",","dict",")",":","a","dict","of","shapley","value","matrics",".","If","None",",","shap_dict","will","be","computed","."]
code: def plot_shap_values(self, shap_dict=None, **kwargs):
      """
      Calculates and plots the distribution of shapley values of each feature, for each treatment group.
      Skips the calculation part if shap_dict is given.
  
      Args:
          shap_dict (optional, dict): a dict of shapley value matrics. If None, shap_dict will be computed.
      """
      if shap_dict is None:
          shap_dict = self.get_shap_values()
  
      for group, values in shap_dict.items():
          plt.title(group)
          shap.summary_plot(
              values,
              features=self.X,
              feature_names=self.features,
              **kwargs,
          )
  
imports: import pandas
  import shap
  import matplotlib.pyplot
  from lightgbm import LGBMRegressor
  from sklearn.inspection import permutation_importance
  from sklearn.model_selection import train_test_split
  from copy import deepcopy
  from causalml.inference.meta.utils import convert_pd_to_np
label_desc: Use image node_id 10 for calling the Explainer obj's underlying member method code with example usage: obj.plot_shap_values(shap_dict) without return types