📜  绘制-条形图和饼图

📅  最后修改于: 2020-11-29 07:05:19             🧑  作者: Mango


在本章中,我们将学习如何在Plotly的帮助下制作条形图和饼图。让我们从了解条形图开始。

条形图

条形图显示类别数据,矩形数据的高度或长度与其所代表的值成正比。条可以垂直或水平显示。它有助于显示离散类别之间的比较。图表的一个轴显示要比较的特定类别,另一个轴代表测量值。

下面的示例绘制了一个简单的条形图,显示了参加不同课程的学生人数。 go.Bar()函数返回条形图,其中x坐标设置为主题列表,y坐标设置为学生数量。

import plotly.graph_objs as go
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
data = [go.Bar(
   x = langs,
   y = students
)]
fig = go.Figure(data=data)
iplot(fig)

输出将如下所示-

条形图

要显示分组的条形图,必须将Layout对象的barmode属性设置为group 。在以下代码中,针对科目绘制了代表学生每年的多个轨迹,并以分组的条形图显示。

branches = ['CSE', 'Mech', 'Electronics']
fy = [23,17,35]
sy = [20, 23, 30]
ty = [30,20,15]
trace1 = go.Bar(
   x = branches,
   y = fy,
   name = 'FY'
)
trace2 = go.Bar(
   x = branches,
   y = sy,
   name = 'SY'
)
trace3 = go.Bar(
   x = branches,
   y = ty,
   name = 'TY'
)
data = [trace1, trace2, trace3]
layout = go.Layout(barmode = 'group')
fig = go.Figure(data = data, layout = layout)
iplot(fig)

相同的输出如下-

分组条形图

barmode属性确定在同一位置坐标上的条形图如何在图形上显示。定义的值是“堆栈”(条形图相互堆叠),“相对”,(条形图相互堆叠,负值在轴下方,正值在上方),“”(条形图在旁边另一个)。

通过将barmode属性更改为’ stack ‘,绘制的图形如下所示-

堆栈绘制图

饼形图

饼图仅显示一系列数据。饼图在一个数据系列中显示项目的大小(称为“楔形” ),与项目的总和成比例。数据点显示为整个饼图的百分比。

graph_objs模块中的pie()函数– go.Pie() ,返回Pie跟踪。标签是两个必需的参数。让我们绘制一个简单的语言课程与学生人数的饼图,如此处给出的示例。

import plotly
plotly.tools.set_credentials_file(
   username = 'lathkar', api_key = 'U7vgRe1hqmRp4ZNf4PTN'
)
from plotly.offline import iplot, init_notebook_mode
init_notebook_mode(connected = True)
import plotly.graph_objs as go
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
trace = go.Pie(labels = langs, values = students)
data = [trace]
fig = go.Figure(data = data)
iplot(fig)

以下输出显示在Jupyter笔记本中-

饼形图

甜甜圈图是一个饼图,中间有一个圆孔,看起来像甜甜圈。在以下示例中,两个甜甜圈图以1X2网格布局显示。尽管两个饼图跟踪的“ label ”布局均相同,但每个子图的行和列目的地均由domain属性决定。

为此,我们使用党派席位的数据和2019年议会选举的投票份额。在Jupyter笔记本电脑单元格中输入以下代码-

parties = ['BJP', 'CONGRESS', 'DMK', 'TMC', 'YSRC', 'SS', 'JDU','BJD', 'BSP','OTH']
seats = [303,52,23,22,22,18,16,12,10, 65]
percent = [37.36, 19.49, 2.26, 4.07, 2.53, 2.10, 1.46, 1.66, 3.63, 25.44]
import plotly.graph_objs as go
data1 = {
   "values": seats,
   "labels": parties,
   "domain": {"column": 0},
   "name": "seats",
   "hoverinfo":"label+percent+name",
   "hole": .4,
   "type": "pie"
}
data2 = {
   "values": percent,
   "labels": parties,
   "domain": {"column": 1},
   "name": "vote share",
   "hoverinfo":"label+percent+name",
   "hole": .4,
   "type": "pie"
}
data = [data1,data2]
layout = go.Layout(
   {
      "title":"Parliamentary Election 2019",
      "grid": {"rows": 1, "columns": 2},
      "annotations": [
         {
            "font": {
               "size": 20
            },
            "showarrow": False,
            "text": "seats",
            "x": 0.20,
            "y": 0.5
         },
         {
            "font": {
               "size": 20
            },
            "showarrow": False,
            "text": "votes",
            "x": 0.8,
            "y": 0.5
         }
      ]
   }
)
fig = go.Figure(data = data, layout = layout)
iplot(fig)

相同的输出如下-

甜甜圈图