所以,我想做一个图表,X轴是家族,Y轴是每个家族在我的数据集中出现的次数,我用Pandas库和matplotlib库导入了数据集,我试着做这个图表,但结果是轴颠倒了,元素也靠得太近了,这是我用的代码
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
ornitologia = pd.read_excel('C:/Users/mjoao/OneDrive/Documentos/Coleção_MNRJ/Ornitologia/ornitologia.xlsx')
familias = ornitologia['FAMÍLIA']
fig = plt.figure(figsize=(5,4))
eixo = fig.add_axes([0,0,1,1])
indice = range(len(familias))
eixo.bar(indice, familias)
eixo.set_title('Lotes por famílias', fontsize=15, pad=10)
eixo.set_xlabel('Famílias',fontsize=15)
eixo.set_ylabel('Lotes', fontsize=15)
我希望我能在正确的轴上得到数据,并且它们之间的距离更好,以便真正有用的图形可视化。
2条答案
按热度按时间vwkv1x7d1#
感谢您提供您的代码。我发现有几个问题可能会导致条形图的轴倒置,元素靠得太近。
首先,看起来你当前在图表的y轴上绘制的是families系列,而不是每个家庭的数量。为了得到每个家庭的数量,你可以使用value_counts()方法来计算每个家庭在families系列中的出现次数,如下所示:家族计数=家族值计数()
然后可以使用familia_counts在图形的y轴上绘制每个系列的计数。
第二,范围Python中的()函数生成一个从0开始直到的数字序列(但不包括)familias系列的长度。这意味着indice变量将包含值0,1,2,...,len然而,这些指数将沿着曲线图的x轴均匀地间隔开,要解决这个问题,你可以使用unique()方法来获取familias系列中唯一家族的列表,然后使用np.arange()来生成一个与家族相对应的等间距索引序列,如下所示:
最后,可以使用bar()方法的width和align参数调整条形宽度和条形间距。例如,可以设置width=0.8使条形更宽,并设置align ='center'使条形在其对应的x轴刻度上居中。
下面是代码的更新版本,它可以创建一个具有正确轴和间距的条形图:
我希望这能有所帮助!如果您有任何其他问题或有任何其他我可以帮助您的事情,请告诉我。
eqqqjvef2#
但它出来的时候轴是颠倒的
只需将
bar()
参数切换为正如预期的那样,X轴将显示族,Y轴将显示“每个族出现的次数”。
并且元件也太靠近在一起
这是因为为图形设置的宽度较短:
plt.figure(figsize=(5,4))
。尝试增加第一个值,直到达到所需的外观。如果不希望字符串名称重叠,您可能还需要尝试
xticks
标签旋转。以下是您可以获得的图形类型(使用随机生成的值)