Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中显示条形图_Python_Python 3.x_Pandas_Matplotlib_Bar Chart - Fatal编程技术网

如何在python中显示条形图

如何在python中显示条形图,python,python-3.x,pandas,matplotlib,bar-chart,Python,Python 3.x,Pandas,Matplotlib,Bar Chart,我正在尝试用Python创建一个包含多个条形图的条形图。条形图应在每个条形图顶部显示值。 我有如下数据集: Speciality Very interested Somewhat_interested Notinterested Big Data (Spark/Hadoop) 1332 729 127 Data Analysis / Statistics 1688

我正在尝试用Python创建一个包含多个条形图的条形图。条形图应在每个条形图顶部显示值。 我有如下数据集:

Speciality                  Very interested Somewhat_interested Notinterested
Big Data (Spark/Hadoop)         1332           729                      127
Data Analysis / Statistics      1688           444                      60     
Data Journalism                 429            1081                     610
我尝试了以下代码:

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt

pd_dataframe = pd.read_csv('Test-Barchart.csv')
no_of_xaxis = pd_dataframe.Speciality.nunique()
ind = np.arange(no_of_xaxis)
xcord = pd_dataframe['Speciality'].tolist()

veryinterestedlist = pd_dataframe['Very interested'].tolist()
somewhatlist = pd_dataframe['Somewhat interested'].tolist()
notinterestedlist = pd_dataframe['Not interested'].tolist()

fig=plt.figure()
ax = fig.add_subplot(111)
width=0.8

rects1 = ax.bar(ind, veryinterestedlist, width, color='r')
rects2 = ax.bar(ind, somewhatlist, width, color='g')
rects3 = ax.bar(ind+width*2, notinterestedlist, width, color='b')

ax.legend( (rects1[0], rects2[0], rects3[0]), ('Very Interested', 
 'Somewhat Interested', 'Not Interested') )

def autolabel(rects):
   for rect in rects:
    h = rect.get_height()
    ax.text(rect.get_x()+rect.get_width()/2., 1.05*h, '%d'%int(h),
            ha='center', va='bottom')

autolabel(rects1)
autolabel(rects2)
autolabel(rects3)

ax.set_xticks(ind+width)
ax.set_xticklabels( xcord )
plt.show()
问题是,
plt.show()
没有显示任何内容! 代码中没有任何错误。 你能帮我解决这个问题吗?
另外,如何将条形图颜色更改为十六进制代码颜色,而不是r、g或b?e、 g.#5bc0de

对代码的小改动:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

pd_dataframe = pd.read_csv('Test-Barchart.csv')
no_of_xaxis = pd_dataframe.Speciality.nunique()
ind = np.arange(no_of_xaxis)
width = 0.1
xcord = pd_dataframe['Speciality'].tolist()

veryinterestedlist = pd_dataframe['Very interested'].tolist()
somewhatlist = pd_dataframe['Somewhat interested'].tolist()
notinterestedlist = pd_dataframe['Not interested'].tolist()

fig, ax = plt.subplots()

rects1 = ax.bar(ind, veryinterestedlist, width, color='g')
rects2 = ax.bar(ind + width, somewhatlist, width, color='c')
rects3 = ax.bar(ind+2*width, notinterestedlist, width, color='r')

# add some text for labels, title and axes ticks
ax.set_ylabel('y label')
ax.set_title('Title')
ax.set_xticks(ind + width)
ax.set_xticklabels(xcord)

ax.legend( (rects1[0], rects2[0], rects3[0]), ('Very Interested', 
 'Somewhat Interested', 'Not Interested') )

def autolabel(rects):
    """
    Attach a text label above each bar displaying its height
    """
    for rect in rects:
        height = rect.get_height()
        ax.text(rect.get_x() + rect.get_width()/2., 1.05*height,
                '%d' % int(height),
                ha='center', va='bottom')

autolabel(rects1)
autolabel(rects2)
autolabel(rects3)

plt.show()
你会得到:


参考资料:

事实上,运行代码时,我会得到一个图表。一个混乱的图形,但仍然是一个图形。你确定你发布了你的真实代码吗?关于十六进制代码的问题,只需将
color='g'
替换为
color='5bc0de'
。是的,这是实际的代码。我需要柱状图。在x轴专业,如大数据、数据分析。。。。对于每个特色菜,我需要展示三个不同颜色的酒吧。Bar表示感兴趣,Bar表示有点感兴趣,last Bar表示不感兴趣。当然,由于列标题不匹配,代码或数据中存在错误。无论如何,请确保您使用的是交互式后端。非常感谢。它现在正在工作。如何使用十六进制代码颜色为每个条指定不同的颜色,例如##5bc0de只需将
color='c'
替换为
color='5bc0de'
,例如:
rects2=ax.bar(ind+width,somewhatlist,width,color='5bc0de')
它正在工作。非常感谢。很抱歉问了很多问题,但我还是个初学者。显示的条形图有许多格式问题,如下图所示:使用
width=0.1
。要求将宽度保持在0.8