【问题标题】:Plot numpy matrix as violinplot in python在python中将numpy矩阵绘制为violinplot
【发布时间】:2020-03-31 10:04:21
【问题描述】:

我对小提琴情节有疑问。我正在尝试创建对应于 11 个 numpy 矩阵的 11 个小提琴图。 我使用了这段代码,结果如图:

for i in range(0,len(diff)):
    sns.violinplot(y=diff[i],orient='v')

我想分割所有的小提琴图并在它们下面放一个标签。

感谢您的帮助。

【问题讨论】:

    标签: python numpy matplotlib seaborn violin-plot


    【解决方案1】:

    或者如果你想使用seaborn:

    diff = np.array([np.random.normal(loc=i, size=(100,)) for i in range(10)])
    sns.violinplot(data=diff.T)
    

    【讨论】:

      【解决方案2】:

      直接使用matplotlib,而不是seaborn:

      diff = np.array([np.random.normal(loc=i, size=(100,)) for i in range(10)])
      
      fig, ax = plt.subplots()
      for i in range(0,len(diff)):
          ax.violinplot(dataset=diff[i],positions=[i])
      

      或者,更紧凑:

      fig, ax = plt.subplots()
      ax.violinplot(dataset=diff.T,positions=range(10))
      

      如果你的 numpy 数组是分开的:

      array1 = np.random.normal(loc=0, size=(100,))
      array2 = np.random.normal(loc=1, size=(100,))
      array3 = np.random.normal(loc=2, size=(100,))
      array4 = np.random.normal(loc=3, size=(100,))
      array5 = np.random.normal(loc=4, size=(100,))
      
      
      fig, ax = plt.subplots()
      for i,arr in enumerate([array1, array2, array3, array4, array5]):
          ax.violinplot(dataset=arr,positions=[i])
      

      【讨论】:

      • 感谢您的回答,但我有一个不同的问题,我想创建 11 个小提琴图,这 11 个小提琴图来自 11 个不同的 numpy 矩阵,而不是一个有 11 行的矩阵
      • diff 是向量列表吗?您代码中的符号diff[i] 似乎暗示了这一点
      • 我添加了另一个 sn-p 用于处理几个单独的数组
      • diff[i] 是一个numpy矩阵列表
      • 那么我建议的第一个或最后一个解决方案应该能让你到达你想要的地方,不是吗?
      猜你喜欢
      • 2014-01-31
      • 2021-11-23
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-13
      • 1970-01-01
      相关资源
      最近更新 更多