这是我的密码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import hsv_to_rgb
import matplotlib.animation as animation
np.random.seed(12345)
df = pd.DataFrame([np.random.normal(32000,200000,3650),
np.random.normal(43000,100000,3650),
np.random.normal(43500,140000,3650),
np.random.normal(48000,70000,3650)],
index=[1992,1993,1994,1995])
plt.rcParams['figure.figsize'] = [12, 10]
df=df.T
for index,column in df.iteritems():
std=column.std()/np.sqrt(len(column)) _=plt.boxplot(np.array(column),showfliers=False,patch_artist=True,notch=True,conf_intervals=np.array([column+std,column-std]).T)不管我做什么,我都会犯这个错误:
ValueError: 'conf_intervals' and 'x' have different lengths我检查了它们是否是相同的长度,并尝试使用和不将类型更改为numpy数组。
发布于 2022-02-23 20:30:51
它们的形状不同:np.array(column).shape是(3650,),np.array([column+std,column-std]).T.shape是(3650, 2)。
一个简单的修补程序可以将您的x重新定义为x = np.array([column, column])。这是生成的for循环(包括一些格式修复)及其输出:
for index, column in df.iteritems():
std = column.std() / np.sqrt(len(column))
x = np.array([column, column])
conf_intervals = np.array([column + std, column - std]).T
plt.boxplot(
x,
showfliers=False,
patch_artist=True,
notch=True,
conf_intervals=conf_intervals,
)
plt.show()

https://stackoverflow.com/questions/71243518
复制相似问题