如何在直方图中绘制具有相同标签编号的多个特征

狮子座

我有一个包含8个功能和1个类的文本文件。我文件的数据是(data.txt):

1,1,3,2,1,1,1,3,HIGH
1,1,3,1,2,1,1,3,HIGH
1,1,1,1,3,3,1,2,HIGH
1,3,2,1,3,3,3,3,HIGH
1,3,1,2,3,1,2,1,HIGH
2,3,1,2,1,2,2,1,HIGH
2,2,2,2,2,1,2,3,HIGH
2,2,1,1,1,2,2,3,HIGH
3,2,1,3,1,3,3,3,HIGH
3,2,1,2,2,3,3,2,HIGH

在上面的文件中,前8列是功能。它们用可能是1或2或3的数字标记。最后一列是类名(HIGH)。现在,我想根据标签号来绘制这些特征。我可以通过以下代码在第3列中进行操作:

import pandas as pd
from matplotlib import pyplot as plt

df = pd.read_csv('data.txt', header=None)

# Features are : A,B,C,...,H
df.columns = ['A', 'B','C', 'D', 'E', 'F', 'G', 'H', 'class']

X = df.ix[:, 0:8].values
y = df.ix[:, 8].values

kind = ['barstacked']
deg = ['HIGH']
pos = ['left','right','mid']
col = ['r','b','y']

with plt.style.context('seaborn-whitegrid'):
    plt.figure(figsize=(8, 6))

    for j in range(0,3):
        for i in range(1):
                plt.hist(X[y == deg[i], j],
                     label=deg[i],
                     bins=30,
                     alpha=0.6, histtype=kind[i], align=pos[j], color=col[j])

    plt.tick_params(axis='both', which='major', labelsize=17)
    plt.xlim(0.75, 3.25)
    plt.tight_layout()
    plt.savefig("figure.png" , format='png', dpi=700)
    plt.show()

结果如下: 在此处输入图片说明

However I could not plot the other 5 columns because I did not know how to put them next to each other as there are only 3 align options (left, mid and right). What I am looking at is a histogram plot for all 8 features that separates the features based on the tag number. A graph like this:

在此处输入图片说明

Sheldore

You don't need a histogram here and you can easily generate the required figure using a bar chart because you are just plotting a single frequency here. The idea is as follows:

  • Use Counter module from collections to get the frequency of 1, 2, and 3.
  • 条形图的x位置将围绕1、2和3居中。但是,要获得理想的效果,可以通过偏移x位置来对其进行调整:将1、2、3和3的左边的前4个条形1、2、3右边的下4个小节。可以使用(j-4)*0.1添加到x值的offset参数来完成在这里0.1是条形宽度的不错选择。
  • 您无需在i此处进行额外的循环,因为它始终为0
  • df.ix在较新的熊猫版本中已弃用。您将不得不使用df.iloc

以下是您的操作方法。

df.columns = ['A', 'B','C', 'D', 'E', 'F', 'G', 'H', 'class']

X = df.ix[:, 0:8].values
y = df.ix[:, 8].values

with plt.style.context('seaborn-whitegrid'):
    plt.figure(figsize=(8, 6))
    for j in range(0,8):
            freqs = Counter(X[y == deg[0], j])
            xvalues = np.array(list(freqs.keys()))
            plt.bar(xvalues+(j-4)*0.1, freqs.values(), width=0.1, 
                    alpha=0.9, edgecolor='k', lw=2)
    plt.tick_params(axis='both', which='major', labelsize=17)
    plt.xlim(0.25, 3.75)
    plt.xticks([1,2,3])
    plt.tight_layout()
    plt.show()

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在与Seaborn相同的图上绘制多个直方图

Python-如何在多个直方图上具有相同的最大值

是否可以在一页上绘制具有不同比例的相同变量的多个直方图?

如何在存在多个组的单个直方图中绘制多条平均线?

如何在R中的一个图中绘制多个直方图

如何在具有多个轴的 Plotly (R) 子图中正确放置轴标签?

如何在Python中构造具有多个特征的元素

如何在R中快速在多个直方图中添加x标签

如何绘制具有相同 x 值的多个 y 值?

如何在直方图中绘制字典中的键和值

如何在R的直方图中绘制SD的钟形曲线?

如何使用python创建具有多个相同标签的xml

绘图-如何在单个绘图中复制相同的直方图

如何在R中绘制直方图并具有精确的轴值。

如何在matplotlib直方图中显示刻度标签?

如何在matplotlib的直方图中居中放置标签

在 Seaborn 直方图中绘制多个分布

选择具有相同className的多个标签?

如何根据簇标签在绘图中绘制具有多种颜色的单线

如何在地图中为相同的值绘制相同的颜色?

如何在具有相同名称的特征之间消除歧义?

如何将来自具有相同特征的不同数据集的facet_grid合并到一个图中?

如何在查询公式中具有多个标签?

如何在床文件中编号具有相同名称的序列

(Matplotlib) 如何在复杂条形图中删除刻度并将标签添加到多个图层(具有多个断轴)

如何计算和绘制具有分离特征的图?

如何在带有HStack的SwiftUI视图中使所有视图具有相同的高度?

MATLAB:如何使2个直方图具有相同的bin宽度?

Seaborn.Distplot生成直方图和具有不同x轴的KDE线-它们如何在绘图中合并?