如何将 plot 方法整合到我的 class
How to integrate plot method into my class
我正在尝试制作一个 class,我可以用它制作任何列表的直方图和数据图。我的计算 运行 很好,但 plot 方法似乎不起作用。非常感谢您的帮助:)
from matplotlib import pyplot as plt
class BasicStatistics:
def __init__(self, list):
self.list = list
def mean(self):
return sum(self.list) / len(self.list)
def median(self):
self.list.sort()
if len(self.list) % 2 == 1:
return self.list[len(self.list) // 2]
else:
return (self.list[len(self.list) // 2 - 1] + self.list[len(self.list) // 2]) / 2
def var(self):
avg = self.mean()
var = sum((x - avg) ** 2 for x in self.list) / len(self.list)
return var
def std_dev(self):
vari = self.var()
std_dev = (vari) ** (1 / 2)
return std_dev
def norma(self):
return [(i-self.mean()) / self.var() for i in self.list]
def plot(self):
fig, (axs1,axs2,axs3) = plt.subplots(2)
axs1.hist(self.list)
axs1.axvline(self.mean, color='red')
axs1.axvline(self.median, color='black')
axs1.axvline(self.mean - self.std_dev(), color='green')
axs1.axvline(self.mean + self.std_dev(), color='green')
axs2.plot(lst)
plt.show()
这是一个出剧情的版本,不知道是不是你想要的。请参阅我对已识别错误的问题的评论。
注意Whosebug是针对具体问题的,不是给别人调试代码的地方。您的问题可能最终会被删除。
from matplotlib import pyplot as plt
class BasicStatistics:
def __init__(self, list):
self.list = list
def mean(self):
return sum(self.list) / len(self.list)
def median(self):
self.list.sort()
if len(self.list) % 2 == 1:
return self.list[len(self.list) // 2]
else:
return (self.list[len(self.list) // 2 - 1] + self.list[len(self.list) // 2]) / 2
def var(self):
avg = self.mean()
var = sum((x - avg) ** 2 for x in self.list) / len(self.list)
return var
def std_dev(self):
vari = self.var()
std_dev = (vari) ** (1 / 2)
return std_dev
def norma(self):
return [(i-self.mean()) / self.var() for i in self.list]
def plot(self):
fig, (axs1,axs2) = plt.subplots(2)
axs1.hist(self.list)
axs1.axvline(self.mean(), color='red')
axs1.axvline(self.median(), color='black')
axs1.axvline(self.mean() - self.std_dev(), color='green')
axs1.axvline(self.mean() + self.std_dev(), color='green')
axs2.plot(self.list)
plt.show()
aa = BasicStatistics([1,7,3, 4, 5, 3, 2])
aa.plot()
我正在尝试制作一个 class,我可以用它制作任何列表的直方图和数据图。我的计算 运行 很好,但 plot 方法似乎不起作用。非常感谢您的帮助:)
from matplotlib import pyplot as plt
class BasicStatistics:
def __init__(self, list):
self.list = list
def mean(self):
return sum(self.list) / len(self.list)
def median(self):
self.list.sort()
if len(self.list) % 2 == 1:
return self.list[len(self.list) // 2]
else:
return (self.list[len(self.list) // 2 - 1] + self.list[len(self.list) // 2]) / 2
def var(self):
avg = self.mean()
var = sum((x - avg) ** 2 for x in self.list) / len(self.list)
return var
def std_dev(self):
vari = self.var()
std_dev = (vari) ** (1 / 2)
return std_dev
def norma(self):
return [(i-self.mean()) / self.var() for i in self.list]
def plot(self):
fig, (axs1,axs2,axs3) = plt.subplots(2)
axs1.hist(self.list)
axs1.axvline(self.mean, color='red')
axs1.axvline(self.median, color='black')
axs1.axvline(self.mean - self.std_dev(), color='green')
axs1.axvline(self.mean + self.std_dev(), color='green')
axs2.plot(lst)
plt.show()
这是一个出剧情的版本,不知道是不是你想要的。请参阅我对已识别错误的问题的评论。
注意Whosebug是针对具体问题的,不是给别人调试代码的地方。您的问题可能最终会被删除。
from matplotlib import pyplot as plt
class BasicStatistics:
def __init__(self, list):
self.list = list
def mean(self):
return sum(self.list) / len(self.list)
def median(self):
self.list.sort()
if len(self.list) % 2 == 1:
return self.list[len(self.list) // 2]
else:
return (self.list[len(self.list) // 2 - 1] + self.list[len(self.list) // 2]) / 2
def var(self):
avg = self.mean()
var = sum((x - avg) ** 2 for x in self.list) / len(self.list)
return var
def std_dev(self):
vari = self.var()
std_dev = (vari) ** (1 / 2)
return std_dev
def norma(self):
return [(i-self.mean()) / self.var() for i in self.list]
def plot(self):
fig, (axs1,axs2) = plt.subplots(2)
axs1.hist(self.list)
axs1.axvline(self.mean(), color='red')
axs1.axvline(self.median(), color='black')
axs1.axvline(self.mean() - self.std_dev(), color='green')
axs1.axvline(self.mean() + self.std_dev(), color='green')
axs2.plot(self.list)
plt.show()
aa = BasicStatistics([1,7,3, 4, 5, 3, 2])
aa.plot()