如何让所有的图例出现在情节中?

时间:2018-02-18 19:22:51

标签: matlab plot legend

我使用此代码绘制X向量与example.txt

上表格的所有列
C = readtable('example.txt', 'Delimiter',',');
X = 5:5:430;
%%
for i=1:numel(X)
plot(X,C{:,i})
hold on
grid on
end
LegendString = cell(1,numel(X));
hold all
for k = 1:numel(X)
    LegendString{k} = sprintf('%i',X(k));
end
legend(LegendString)

在这里,您可以下载example.txt文件来运行代码: https://la.mathworks.com/matlabcentral/answers/383371-how-to-make-all-the-legend-appear-in-a-plot

为什么剧情只向我展示50个传说而不是代码所要求的全部86个?

1 个答案:

答案 0 :(得分:1)

它不是Matlab错误,而是故意行为:传说目前仅限于componentDidMount(){ return fetch('http://example.com/search.php' , { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify({ // Getting the search. search: this.props.name }) }).then((response) => response.json()) .then((responseJson) => { this.setState({ //isLoading: false, dataSource: responseJson }, function() { // In this block you can do something with new state. }); }) .catch((error) => { console.error(error); }); } return( <FlatList Vertically data={this.state.dataSource} ItemSeparatorComponent={this.FlatListItemSeparator} renderItem={({item}) => <TouchableOpacity onPress={()=> this.onPress(item.subCategory, item)}> <Image source={{uri: item.icon}} style={{width:100, height:100}} /> </TouchableOpacity> } numColumns={1} onEndReachedThreshold={120} onEndReached={this.endReach()} keyExtractor={(item)=>item.ID} /> ) 个元素(您可能已经注意到您的情节图例实际上包含50项,而不是50)。可能已经引入了这个限制,以避免产生过大的传说,其中包括:

  • 很难读(特别是如果它们溢出了绘图窗口);
  • 绘制的计算成本很高;
  • 占据了大量的记忆。

这个硬编码限制的痕迹可以在图例脚本本身中找到(为了查看它,在命令窗口中运行86)。对于使用作为参数传递的显式标签创建的图例,限制可能应用于处理图例图形组件的类中的某个内部。对于没有定义标签集创建的图例,子功能open legend应用此限制:

set_children_and_strings

为了克服这个限制,你有两种选择:

  1. 只选择要在图例中显示的几个元素;
  2. 通过为每组50个项目创建一个图例来使用解决方法。
  3. 修改

    if auto_children && length(ch) > 50,
        % only automatically add first 50 to cut down on huge lists
        ch = ch(1:50);
    end
    
    matlab.graphics.illustration.internal.generateDisplayNames(ch);