Python:';numpy.ndarray和#x27;对象没有属性';violinplot';

Python:';numpy.ndarray和#x27;对象没有属性';violinplot';,python,numpy,matplotlib,Python,Numpy,Matplotlib,在过去的几周里,我一直在使用matplotlib,学习如何制作不同的图形等等。我目前处于停滞状态。我正在处理基因表达数据,所以我有一个csv文件,其中包含3列数据(突变、移码和非突变)。然而,我正在尝试制作一个小提琴情节,我不断地得到一个错误: Traceback (most recent call last): File "/home/fmohamed/Documents/violinplot_script.py", line 39, in <module> axes.

在过去的几周里,我一直在使用matplotlib,学习如何制作不同的图形等等。我目前处于停滞状态。我正在处理基因表达数据,所以我有一个csv文件,其中包含3列数据(突变、移码和非突变)。然而,我正在尝试制作一个小提琴情节,我不断地得到一个错误:

Traceback (most recent call last):
  File "/home/fmohamed/Documents/violinplot_script.py", line 39, in <module>
    axes.violinplot(all_data,
AttributeError: 'numpy.ndarray' object has no attribute 'violinplot'

提前感谢您提供的任何帮助。

请检查matplotlib的版本,因为violinplots仅在之后提供。要检查matplotlib版本,只需在python终端中键入:

>>> import matplotlib
>>> print matplotlib.__version__

我遇到了一个非常类似的问题。问题是,添加多个子地块时,
对象不再是Matplotlib
类型,而是多个此类对象的Numpy数组

解决方案是在循环中调用
violinplot

for ax in axes:
    ax.violinplot(all_data,
               showmeans=False,
               showmedians=False)
    ax.set_title('violin plot')
请注意,如果行和列都大于1,则需要有一个嵌套循环,因为您有一个2D Numpy数组


当然,这只是多次重复相同的绘图,因此您可能希望将所有
数据的几个不同示例放入一个与
轴具有相同尺寸的Numpy数组中,请查看,正如异常消息所示,
是由3个
对象组成的Numpy数组。您可以执行轴[0]
violinplot(第一个数据集)
(因此您需要一个循环来绘制所有三个数据集)。正如@chthonicdaemon所建议的,如果您想在一个命令中为所有三个数据集绘制小提琴图,请查看Seaborn及其
FaceGrid
对象。顺便说一句,您的
all_data
数组似乎是一个1d数组。这是你的本意吗?如果是这样的话,
子批次
调用中的三个独立列的用途是什么?
for ax in axes:
    ax.violinplot(all_data,
               showmeans=False,
               showmedians=False)
    ax.set_title('violin plot')