您的位置:

python画柱状图bar,python画柱状图代码详解

本文目录一览:

python 如何画柱形图?

import matplotlib.pyplot as plt

import numpy as np

n = 12

X = np.arange(n)

Y = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)

bar(X, Y, facecolor='#9999ff', edgecolor='white')

show()

使用matplotlib库做非常容易。

python怎么用matplotlib画柱状图

Python——使用matplotlib绘制柱状图

1、基本柱状图

首先要安装matplotlib 可以使用pip命令直接安装

[python] view plain copy

# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt

num_list = [1.5,0.6,7.8,6]

plt.bar(range(len(num_list)), num_list)

plt.show()

2、设置颜色

[python] view plain copy

# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt

num_list = [1.5,0.6,7.8,6]

plt.bar(range(len(num_list)), num_list,fc='r')

plt.show()

[cpp] view plain copy

# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt

num_list = [1.5,0.6,7.8,6]

plt.bar(range(len(num_list)), num_list,color='rgb')

plt.show()

3、设置标签

[python] view plain copy

# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt

name_list = ['Monday','Tuesday','Friday','Sunday']

num_list = [1.5,0.6,7.8,6]

plt.bar(range(len(num_list)), num_list,color='rgb',tick_label=name_list)

plt.show()

4、堆叠柱状图

下面柱状图效果用python怎么做出来?主要是横坐标的变量名要斜着写这种方式。matlab也行

matlab实现演示效果如下:

%需要新建一个function,以下是function的代码(保存时文件名只能是rotateticklabel.m):

function th=rotateticklabel(h,rot,demo)

%ROTATETICKLABEL rotates tick labels

%   TH=ROTATETICKLABEL(H,ROT) ris the calling form where H is a handle to

%   the axis that contains the XTickLabels that are to be rotated. ROT is

%   an optional parameter that specifies the angle of rotation. The default

%   angle is 90. TH is a handle to the text objects created. For long

%   strings such as those produced by datetick, you may have to adjust the

%   position of the axes so the labels don't get cut off.

%

%   Of course, GCA can be substituted for H if desired.

%

%   TH=ROTATETICKLABEL([],[],'demo') shows a demo figure.

%

%   Known deficiencies: if tick labels are raised to a power, the power

%   will be lost after rotation.

%

%   See also datetick.

%   Written Oct 14, 2005 by Andy Bliss

%   Copyright 2005 by Andy Bliss

%DEMO:

if nargin==3

  x=[now-.7 now-.3 now];

  y=[20 35 15];

  figure

  plot(x,y,'.-')

  datetick('x',0,'keepticks')

  h=gca;

  set(h,'position',[0.13 0.35 0.775 0.55])

  rot=90;

end

%set the default rotation if user doesn't specify

if nargin==1

  rot=90;

end

%make sure the rotation is in the range

% 0:360 (brute force method)

% while rot360

%     rot=rot-360;

% end

% while rot0

%     rot=rot+360;

% end

%get current tick labels

a=get(h,'XTickLabel');

%erase current tick labels from figure

set(h,'XTickLabel',[]);

%get tick label positions

b=get(h,'XTick');

c=get(h,'YTick');

%make new tick labels

if rot180

  th=text(b,repmat(c(1)-.1*(c(2)-c(1)),length(b),1),a,'HorizontalAlignment','right','fontsize',14,'fontweight','bold','rotation',rot);

else

  th=text(b,repmat(c(1)-.1*(c(2)-c(1)),length(b),1),a,'HorizontalAlignment','left','fontsize',14,'fontweight','bold','rotation',rot);

end

%画好图需要旋转坐标时调用上面的rotateticklabel函数,比如用以下的测试数据

x = round(rand(5,3)*10);

h=bar(x,1,'group');

set(gca,'xticklabels',{'benchmark1','benchmark2','benchmark3','benchmark4','benchmark5'});

h = gca;

th=rotateticklabel(h, 45)

%满意请采纳

如何利用Python中的Pandas库绘制柱形图

我们利用Python的Pandas库可以绘制很多图形,那么如何绘制柱形图呢?下面我给大家分享演示一下。

工具/材料

Pycharm

首先我们打开Excel文件,准备要生成柱形图的数据表,如下图所示

接下来在Python文件中导入pandas库,然后将Excel文件加载到缓存对象中,如下图所示

然后我们导入matplotlib下面的pyplot库,如下图所示,导入以后给它起一个别名

接下来我们通过pandas库下面的bar来设置柱形图的X,Y坐标轴,如下图所示

然后通过pyplot的show方法将柱形图进行展示出来,如下图所示

接下来运行程序以后我们就看到柱形图生成出来了,如下图所示

然后如果我们想将柱形图中的数据排序的话可以利用sort_values实现,如下图所示

最后运行排序好后的程序,我们就可以看到柱形图中的数据已经排序好了,如下图所示

如何用python绘制简单条形图?

如何用python绘制简单条形图呢?这里离不开matplotlib的使用。

条形图是数据可视化图形中很基础也很常用的一种图,简单解释下:条形图也叫长条图(英语:bar chart),亦称条图(英语:bar graph)、条状图、棒形图、柱状图、条形图表,是一种以长方形的长度为变量的统计图表。长条图用来比较两个或以上的价值(不同时间或者不同条件),只有一个变量,通常利用于较小的数据集分析。长条图亦可横向排列,或用多维方式表达。

那么一个普通的条形图是长什么样子的呢?

当!当!当!就是下图的这个样子:

图先亮出来啦,接下来研究这个图是怎么画的吧,先看一下原数据长什么样子:

实际画图的流程和画折线图很相近,只是用到的画图函数不一样,绘制条形图的函数plt.bar():

由于这只是最简单的一个条形图,实际上条形图的函数plt.bar()还有不少可以探索的参数设置,和对折线图函数plt.plot()的探索差不多,有兴趣的孩子可以自己去进行探索哦。

按照条形长短进行排序展示的条形图

当然也可以有其他的设置,比如说上图中的线条高低参差不齐,这是因为x轴的数据是按照学校名称进行排序的,那么可不可以按照分数的高低进行排序呢?也就是让所有的长方形按照从高到矮或者从矮到高的顺序进行排列?

当然可以啦!这里需要强调的是,条的高低排列等信息都是来源于原数据的,要想让条形的顺序发生改变,需要对画图的来源数据进行更改呢!

把原数据逆序排序后截取前十名数据赋值给data_yuwen,作为新的数据源传入画图函数plt.bar(),画出来的图自然就不一样了。

先看一眼数据长什么样子:

根据这个数据源绘制出的图形如下,由于用来画图的数据进行了降序排序操作,所以生成条形图的条也会进行降序排序展示:

很多时候,我们常见的条形图还有另一种展现形式,那就是横向的条形图,比较火的那种动态条形图绝大多数也都是横向的条形图,那么横向的条形图如何绘制呢?

理解plt.bar()主要参数

其实也不难,只要清楚plt.bar()函数中主要参数的作用就可以了!条形图函数中有五个主要参数,分别是x,height,width,bottom,orientation。其中x控制的是每个条在x轴上位置,height控制的是每个条的长度,width控制的是每个条的宽度,bottom控制的是每个条在y轴方向的起始位置,orientation控制的是条形的方向,是纵向还是横向,默认是纵向的。

通过一个小例子理解下这几个参数的作用:

上边的几行代码输出的图形如下:

对比着代码和实际输出的条形图,各个主要参数的作用是不是一目了然啦?

横向条形图

理解了这几个参数作用后,纵向的条形图转换成横向的条形图就没什么难度了!

需要设置所有条形在x轴的位置都为0,也就全部从最左侧开始画条形;由于是横向条形图,所以实际上条的宽度显示的是数据大小,将width参数设置成原数据中的语文成绩;bottom控制每个条在y轴方向的起始位置,设置bottom=range(10)设置每个条形在y轴的起始位置各不相同避免有条形重叠;height控制的是每个条在y轴方向上的长度,条形图横向设置后,在y轴上的长度失去了衡量数据的意义,所以直接设置一个常数即可;最后设置条形的方向为横向,即orientation=“horizontal”。

温馨提示:数据和标签一定要匹配,即plt.bar()重点的数据要和plt.yticks()中提取出来的标签一一对应,一旦不匹配,整个图展现的结果就是一个错误的结果!

上述代码生成的条形图如下:

感觉上边这种生成横向条形图的方式有点点绕,和人们的习惯认知有点不大一样,难道画一个横向条形图就非得转变自己的习惯认知这么反人类吗?

当然不是的,实际上有更简单的方法绘制一个横向条形图,之所以没有一开始就直接用这种简单的方法,也是为了让大家体会下条形图参数的灵活设置而已,而且如果比较绕的方法都能理解了,简单的方法理解和运用起来就更没有难度了啊!

不卖关子了,我们来认识下和plt.bar()函数类似的plt.barh()函数。

plt.barh()函数是专门绘制水平条形图的函数,主要的参数有:

y 控制y轴显示的标签来源width 控制横向条形的长度,即用来进行对比的数据源height 条形的宽度需要设置的参数主要就是这三个,比用plt.bar()函数绘制水平条形图简单了很多,具体代码如下:

效果图:

和用plt.bar()函数绘制的横向条形图一毛一样对不对?以后有需求绘制横向条形图,尽量用plt.barh()函数吧,毕竟它是专门绘制这种类型图的,简单好用。

然而实际工作中对于条形图的需求不只是这些,比如例子中只是对各个学校语文成绩的展示,有时候需要各个学科的成绩同时展现在一幅条形图中,有时候也需要绘制堆积条形图对各学科的成绩以及总成绩进行展示,这些图又该如何绘制呢?其实只要理解了各个参数的含义,绘制这些图也不在话下,至于具体怎么画,且看下回分解啊!

新手python怎么从Excel中读取多行多列画并列柱状图?

首先,dataframe自带的柱状图,可以将每列作为一个图例

import pandas as pd

data=pd.read_excel()

data.bar()