How to create bar graph with categorical data

136 次查看(过去 30 天)
I would like to plot a bar graph separated in categories. I tried out the example code here from Matlab Documentation:
c = categorical({'apples','oranges','pears'});
prices = [1.23 0.99 2.3];
bar(c,prices)
But I don't get the categories displayed on the "x-Axis" of the graph, instead just int's 1-3.

采纳的回答

Gautam Ilango
Gautam Ilango 2017-3-18
Meanwhile I have found this workaround:
prices = [1.23 0.99 2.3];
bar(prices)
set(gca,'xticklabel',{'apples','oranges','pears'});
  4 个评论
Sajad Ahmad Rather
Sajad Ahmad Rather 2020-10-27
Eactly. It just solved my problem in a second.
Thank you very much from the bottom of my heart.
Well done.
Toshia M
Toshia M 2023-9-20
Starting in R2023b, you can specify x as a string vector (or as a cell array of character vectors). This enhancement makes it much easier to label the bars with text in a specific order. For example, create three bars with text labels:
c = ["pears" "apples" "oranges"];
prices = [1.23 0.99 2.3];
bar(c,prices)

请先登录,再进行评论。

更多回答(1 个)

Chaman Dewangan
Chaman Dewangan 2021-7-13
I found answer in mathworks.com as. Very happy it is working nicely.
One way to indicate categories for your bars is to specify X as a categorical array. The bar function uses a sorted list of the categories, so the bars might display in a different order than you expect. To preserve the order, call the reordercats function.
Define X as categorical array, and call the reordercats function to specify the order for the bars. Then define Y as a vector of bar heights and display the bar graph.
X = categorical({'Small','Medium','Large','Extra Large'});
X = reordercats(X,{'Small','Medium','Large','Extra Large'});
Y = [10 21 33 52];
bar(X,Y)

类别

Help CenterFile Exchange 中查找有关 Bar Plots 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by