python-3.x - Matplotlib 箱线图 - 使用 for 循环绘制分组值
问题描述
我正在尝试使用 for 循环绘制按唯一列值分组的箱形图,而不知道该列中唯一值的数量。
您可以在下面看到示例代码(没有 for 循环)和所需的输出。
import pandas as pd
from numpy import random
import matplotlib.pyplot as plt
#------------------------------ Preparing the data frame -------------------------------#
df = pd.DataFrame(data = random.randn(5,4), index = ['A','B','C','D','E'],
columns = ['W','X','Y','Z'])
df['W'] = ['10/01/2018 12:00:00','10/03/2018 13:00:00',
'10/03/2018 12:30:00','10/04/2018 12:05:00',
'10/08/2018 12:00:15']
df['W']=pd.to_datetime(df['W'])
df['Entity'] = ['C201','C201','C201','C202','C202']
print(df)
#-----------------------------------Plotting the data ----------------------------------#
fig, ax = plt.subplots()
data_to_plot = [df['Y'][df['Entity']=='C201'], df['Y'][df['Entity']=='C202']]
# Create the boxplot
bp = ax.boxplot(data_to_plot, showfliers=False)
ax.set_xticklabels(['C201' ,'C202'])
plt.show()
解决方案
你能做这样的事情吗?
#-----------------------------------Plotting the data ----------------------------------#
fig, ax = plt.subplots()
data_to_plot = []
tick_labels = []
for entity in df['Entity'].unique():
data_to_plot.append(df['Y'][df['Entity']==entity])
tick_labels.append(entity)
# Create the boxplot
bp = ax.boxplot(data_to_plot, showfliers=False)
ax.set_xticklabels(tick_labels)
plt.show()
推荐阅读
- python - 将行写入文档时遇到问题
- c++ - 将运算符 = 传递给函数对象
- c# - 如何正确反序列化 Json 字符串
- android - 为什么我在按钮周围有边距?
- python - 在单独的txt文件中导出csv的每一行显示键错误
- javascript - 使用 Reflect ES6 获取子属性
- g++ - 我可以更改 g++ 的修饰以匹配 xlC 吗?
- ruby - 将下拉菜单中的文本选项放入数组中以进行迭代以导航到不同的页面
- azure-spatial-anchors - Azure 空间锚可以在建筑物中的多个楼层使用吗?
- python - 如何将 JSX 之类的语言嵌入到 python 脚本中?