首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python绘图字典

Python绘图字典
EN

Stack Overflow用户
提问于 2018-11-26 15:11:11
回答 1查看 1.1K关注 0票数 1

我对蟒蛇/熊猫/matplotlib的世界非常陌生,但我最近一直用它来制作盒子和胡须情节。我很好奇如何使用一列特定的数据为每一张纸创建一个盒子和晶须图,即我有17张纸,我在每一张纸上有一列名为HMB和DV的列。我想为HMB绘制一个盒子和晶须上的17个数据集,在DV图上绘制另外17个数据集。下面是我到目前为止的情况。

我可以打开文件,把所有的表都放到list_dfs中,但是不知道从哪里开始。我本来打算手工分割每组数据(在来这里寻求帮助之前,我从下面开始),但是当我将来有更多的数据时,我不想手工完成。任何帮助都将不胜感激!

代码语言:javascript
复制
import pandas as pd
import numpy as np
import xlrd
import matplotlib.pyplot as plt
%matplotlib inline
from pandas import ExcelWriter
from pandas import ExcelFile
from pandas import DataFrame

excel_file =  'Project File Merger.xlsm'

list_dfs = []

xls = xlrd.open_workbook(excel_file,on_demand=True)
for sheet_name in xls.sheet_names():
    df = pd.read_excel(excel_file,sheet_name)
    list_dfs.append(df) 

d_psppm = {}
for i, sheet_name in enumerate(xls.sheet_names()):
    df = pd.read_excel(excel_file,sheet_name)
    d_psppm["PSPPM" + str(i)] = df.loc[:,['PSPPM']]

values_list = list(d_psppm.values())
print(values_list[:])

对于17个列表条目,示例输出如下所示,但每个条目的行数不同。

代码语言:javascript
复制
                              PSPPM
0                             0.246769
1                             0.599589
2                             0.082420
3                             0.250000
4                             0.205140
5                             0.850000,
                              PSPPM
0                             0.500887
1                             0.475255
2                             0.472711
3                             0.412953
4                             0.415883
5                             0.703716,...

接下来我要做的是创建一个盒子和胡须图,一个有17个盒子和胡须的情节。我不知道如何使字典以值和索引作为名称进行绘图。我试着挖掘,并想出如何将字典转换成列表,然后绘制列表中的每个元素,但都没有成功。

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-27 09:26:50

我同意@Alex的观点,即将您的列形成一个新的DataFrame,然后根据它进行绘图将是一种很好的方法,但是,如果您要使用dict,那么它应该是这样的。根据您正在使用的Python版本,字典可能是无序的,因此,如果情节上的排序对您很重要,那么您可能希望按照您想要的顺序创建一个字典键列表,然后进行迭代。

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np

#colours = []#list of colours here, if you want
#markers = []#list of markers here, if you want
fig, ax = plt.subplots()
for idx, k in enumerate(d_psppm, 1):
    data = d_psppm[k]
    jitter = np.random.normal(0, 0.1, data.shape[0]) + idx
    ax.scatter(jitter, 
               data,
               s=25,#size of the marker
               c="r",#colour, could be from colours
               alpha=0.35,#opacity, 1 being solid
               marker="^",#or ref. to markers, e.g. markers[idx]
               edgecolors="none"#removes black border
              )

按照Alex的建议,您可以使用数据创建一个海运框图,并覆盖一个群集图来显示数据(这取决于每个行有多少行是否实用)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53484051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档