我们可以使用 pyplot 中的 pie() 方法来绘制饼图。
pie() 方法语法格式如下:
matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)[source]
参数说明:
x:浮点型数组,表示每个扇形的面积。
explode:数组,表示各个扇形之间的间隔,默认值为0。
labels:列表,各个扇形的标签,默认值为 None。
colors:数组,表示各个扇形的颜色,默认值为 None。
autopct:设置饼图内各个扇形百分比显示格式,%d%% 整数百分比,%0.1f 一位小数, %0.1f%% 一位小数百分比, %0.2f%% 两位小数百分比。
labeldistance:标签标记的绘制位置,相对于半径的比例,默认值为 1.1,如 <1则绘制在饼图内侧。
pctdistance::类似于 labeldistance,指定 autopct 的位置刻度,默认值为 0.6。
shadow::布尔值 True 或 False,设置饼图的阴影,默认为 False,不设置阴影。
radius::设置饼图的半径,默认为 1。
startangle::起始绘制饼图的角度,默认为从 x 轴正方向逆时针画起,如设定 =90 则从 y 轴正方向画起。
counterclock:布尔值,设置指针方向,默认为 True,即逆时针,False 为顺时针。
wedgeprops :字典类型,默认值 None。参数字典传递给 wedge 对象用来画一个饼图。例如:wedgeprops={'linewidth':5} 设置 wedge 线宽为5。
textprops :字典类型,默认值为:None。传递给 text 对象的字典参数,用于设置标签(labels)和比例文字的格式。
center :浮点类型的列表,默认值:(0,0)。用于设置图标中心位置。
frame :布尔类型,默认值:False。如果是 True,绘制带有表的轴框架。
rotatelabels :布尔类型,默认为 False。如果为 True,旋转每个 label 到指定的角度。
以下实例我们简单实用 pie() 来创建一个柱形图:
显示结果如下:

设置饼图各个扇形的标签与颜色:
显示结果如下:

突出显示第二个扇形,并格式化输出百分比:

注意:默认情况下,第一个扇形的绘制是从 x 轴开始并逆时针移动:
一直在尝试在jupyternotebook中使用Ruby。使用Python我可以做到这一点importmatplotlib.imageasmpimg有谁知道Ruby的等价物,我没能在任何iRuby或sciruby文档中找到它?澄清一点,在我的gemfile中我有这个gem'iruby'gem'cztop'gem'matplotlib'但似乎无法访问我习惯在python中使用的matplotlib的image部分。我正试图找到在Python中我会这样写的Ruby版本#importingsomeusefulpackagesimportmatplotlib.pyplotaspltimport
在我的ROR中,我想将百分比添加到我的饼图中,我正在使用chartkickgem来渲染饼图。我已经尝试过各种方法来解决这个问题,但似乎都没有用。我也用谷歌搜索并查看了堆栈溢出中的类似帖子。这是我想出的,但它没有显示百分比。我也尝试过这种方法,但还是没有运气请更有经验的人帮我解决这个问题?更新OSCAR的回答我按照Oscar的回答提供的说明进行操作,但它仍然没有显示%。这怎么在application.html.erb看起来:true%>true%>和appplication.js是这样的:////=requirejquery//=requirejquery_ujs//=requirebo
defplot_decision_regions(X,y,classifier,resolution=0.02):#setupmarkergeneratorandcolormapmarkers=('s','x','o','^','v')colors=('red','blue','lightgreen','gray','cyan')cmap=ListedColormap(colors[:len(np.unique(y))])#plotthedecisionsurfacex1_min,x1_max=X[:,0].min()-1,X[:,0].max()+1x2_min,x2_max=X[:,1].
我使用的是KendoUI饼图,我有很多空白区域。删除它的最佳方法是什么。见下图:我的java脚本如下所示:jQuery("#divGraph1").kendoChart({legend:{position:"bottom",padding:1,margin:1},seriesDefaults:{labels:{visible:true,template:"#=kendo.format('{0:P}',percentage)#"},visible:true},tooltip:{visible:true,template:"#=category#-#=kendo.format('{0:P}
使用KendoUICompleteforASP.NETMVC,版本:2013.31119(2013.11.20)...如果我有这段代码:$("#status-chart").kendoChart({dataSource:{data:[{Status:10},{Status:20},{Status:200},{Status:200}]},series:[{field:'Status',categoryField:"Status",aggregate:'count'}]});我得到这张图表:如您所见-状态10和20的值为1,状态200的值为2。很好,但我真正想要的是饼图中完全相同的东西(因
我正在使用echarts.js库来制作饼图,我想使饼图中的每个切片超链接到另一个页面。我现在使用静态数据点,以测试它是否有效-之后将更新为动态数据。下面是pie1a的示例-我希望T2、T2、T4和N/A引用他们自己的页面。T2="http://localhost/T2.html"。//ECHART_PIE1avarechartPie1a=echarts.init(document.getElementById('echart_pie1a'),theme);echartPie1a.setOption({tooltip:{trigger:'item',formatter:"{a}{b}:{
我已经使用d3创建了一个饼图。它工作得很好,但是,当两个元素的数据值相等时,它显示相同的颜色。我该如何解决这个问题?functiongraph_pie_value(data,id,height,width){d3.select(id).selectAll("svg").remove();varradius=Math.min(width,height)/2;varcolor=d3.scale.category20c();varpie=d3.layout.pie().sort(null).value(function(d){returnd.value;});vararc=d3.svg.ar
我可以使用将数据设置到主饼图vardata=[1,2,3,4,5];//valueofdatawillbereturnedthroughanAJAXcallchart1.series[0].setData(data);同理,如何动态设置下钻数据?我试过chart1.drilldown[0].data='[1,2,3]';但是没有用。我正在使用RESTful服务来公开数据。 最佳答案 您可以使用chart.options.drilldown在运行时访问下钻varnewDrillDowns={id:'mydrilldowns',data
类似于thisquestion,但对于Google饼图:如何删除Google饼图上切片之间的白线:在上图中,我想删除绿色箭头突出显示的空白区域。 最佳答案 您可以通过将pieSliceBorderColor设置为"transparent"来消除该间隙。在GoogleCodePlayground上尝试以下操作:functiondrawVisualization(){//Createandpopulatethedatatable.vardata=google.visualization.arrayToDataTable([['Task'
只是想知道是否可以用d3做这样的事情?http://jsfiddle.net/8T7Ew/当您点击某个饼图切片时,该切片会随点击移动到什么位置?到目前为止已经创建了馅饼,只是想知道我是否可以添加此功能body{font:10pxsans-serif;}.arcpath{stroke:#fff;}varwidth=960,height=500,radius=Math.min(width,height)/2;varcolor=d3.scale.ordinal().range(["#98abc5","#8a89a6","#7b6888","#6b486b","#a05d56","#d0743