zoukankan      html  css  js  c++  java
  • MATLAB 画柱状图(/直方图)修改横坐标名称并使其横着显示

    使用MATLAB 画柱状图 ,即bar (x,y),其横坐标是默认 1、2、3、4、……的

    % --v1
    y1=[asum1,asum2,asum3,asum4,asum5,asum6,asum7,asum8,asum9,asum10];
    x1=[1:10];
    bar(x1,y1)

    现在需要修改横坐标名称,使用命令:

    % --v2
    y2=[asum1,asum2,asum3,asum4,asum5,asum6,asum7,asum8,asum9,asum10];
    x2=['<=10','10-25','25-50','50-90','90-300','300-350','350-450','450-550','550-700','>700']; 
    bar(y2)  %先 bar 后 set
    set(gca,'XTickLabel',x2)

     

    但是显示的时候出现文字重叠情况……

    那么,更进一步的,使其名称横着显示:

    % --v3
    y3=[asum1,asum2,asum3,asum4,asum5,asum6,asum7,asum8,asum9,asum10];
    x3str={'<=10','10-25','25-50','50-90','90-300','300-350','350-450','450-550','550-700','>700'}; %新坐标的值
    bar(y3)  %先 bar 后 set
    xtb = get(gca,'XTickLabel');% 获取横坐标轴标签句柄
    xt = get(gca,'XTick');% 获取横坐标轴刻度句柄
    yt = get(gca,'YTick'); % 获取纵坐标轴刻度句柄 
    xtextp=xt;%每个标签放置位置的横坐标,这个自然应该和原来的一样了。                    
    ytextp=-0.1*yt(3)*ones(1,length(xt));
    text(xtextp,ytextp,x3str,'HorizontalAlignment','right','rotation',46)
    set(gca,'XTickLabel',[]); %将原坐标(1,2,3,..)去掉

    最终,加上 label :

    %--添加坐标提示
    xlabel('Rating Counts');
    ylabel('Number of Ratings'); 
    legend('FilmTrust');

     

    设置 xlabel在右边而非中间:

    (最终版代码)

    % --v3
    y3=[asum1,asum2,asum3,asum4,asum5,asum6,asum7,asum8,asum9,asum10];
    x3str={'<=10','10-25','25-50','50-90','90-300','300-350','350-450','450-550','550-700','>700'}; %新坐标的值
    bar(y3)  %先 bar 后 set
    xtb = get(gca,'XTickLabel');% 获取横坐标轴标签句柄
    xt = get(gca,'XTick');% 获取横坐标轴刻度句柄
    yt = get(gca,'YTick'); % 获取纵坐标轴刻度句柄 
    xtextp=xt;%每个标签放置位置的横坐标,这个自然应该和原来的一样了。                    
    ytextp=-0.1*yt(3)*ones(1,length(xt));
    text(xtextp,ytextp,x3str,'HorizontalAlignment','right','rotation',46)
    set(gca,'XTickLabel',[]); %将原坐标(1,2,3,..)去掉
    %--添加坐标提示
    xlabel('Rating Counts');
    ylabel('Number of Ratings'); 
    legend('FilmTrust');
    % ----设置 xlabel在右边而非中间
    h=xlabel('Rating Counts');
    xlim = get(gca,'XLim');
    ylim = get(gca,'YLim');
    set(h,'Position',[xlim(2)+(xlim(2)-xlim(1))*0.05,ylim(1)])

  • 相关阅读:
    函数类型和函数对象
    _strdup和strdup还有string.h和string事
    VS包含头文件的路径设置
    (转)C++学习建议
    2.2Python数据处理篇之---math模块的数学函数
    2.1Python数据处理篇之---内建有关数学的函数
    19LaTeX学习系列之---LaTeX的总结
    18LaTeX学习系列之---LaTeX的参考文献
    17LaTeX学习系列之---LaTeX的版面设计
    16LaTeX学习系列之---LaTeX数学公式的补充
  • 原文地址:https://www.cnblogs.com/shenxiaolin/p/10535644.html
Copyright © 2011-2022 走看看