Я хочу создать одну фигуру с 2 коробочными диаграммами, используя pyplot из matplotlib в python.
Я работаю с набором данных iris, который обеспечивает длину лепестка для 150 цветов из трех типов: Setosa, Versicolor, Virginica.Я хочу создать один блокпост для длины лепестка Setosa и один блокпост для длины лепестка Versicolor, все на одной фигуре.
Я основал свой код на этом уроке: https://matplotlib.org/gallery/pyplots/boxplot_demo_pyplot.html#sphx-glr-gallery-pyplots-boxplot-demo-pyplot-py
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from matplotlib import pyplot as plt
# From the iris dataset I create a dataframe which contains only the features
# of the flowers (sepal length, sepal width, petal length, petal width and the
# flower type.
data = load_iris()
X= data["data"]
y = data ["target"]
iris=pd.DataFrame(X)
iris["target"]=y
iris.columns=data['feature_names']+["target"]
iris["target"]=iris["target"].apply(lambda x:'Setosa' if x == 0 else 'Versicolor' if x == 1 else 'Virginica')
# I create my sub-dataframes which each contain the petal length of one type of flower
ar1 = np.array(iris.loc[lambda iris: iris["target"] == "Setosa", ["petal width (cm)"]])
ar2 = np.array(iris.loc[lambda iris: iris["target"] == "Versicolor", ["petal width (cm)"]])
# This works:
fig, ax = plt.subplots()
ax.boxplot(ar1)
plt.show()
# But this doesn't work:
data1 = [ar1, ar2]
fig, ax = plt.subplots()
ax.boxplot(data1)
plt.show()
Я ожидаю фигуру с 2 боксплотами.Вместо этого я получаю ошибку: «ValueError: X должен иметь 2 или меньше измерений».Однако ar1 и ar2 имеют 2 размера, точно такие же, как показано в примере с matplotlib, упомянутом выше.
Большое спасибо за помощь,