【问题标题】:Why is there a semicolon ; after matplotlibs plot() function?为什么有分号;在 matplotlibs plot() 函数之后?
【发布时间】:2022-04-10 23:55:15
【问题描述】:

我已经看过几次了:

# http://geopandas.org/aggregation_with_dissolve.html
continents.plot(column = 'pop_est', scheme='quantiles', cmap='YlOrRd');

# https://jakevdp.github.io/PythonDataScienceHandbook/04.14-visualization-with-seaborn.html
plt.legend('ABCDEF', ncol=2, loc='upper left');

# https://matplotlib.org/api/pyplot_api.html
x = np.arange(0, 5, 0.1);

让我感到困惑的是,它经常用 matplotlib 完成,而且前后不一致。

这只是一个错误吗?它在 matplotlib 文档中有一段时间吗?

; 在 Python 中的行和行是否有任何功能? (This 表明答案是“否”,但没有解释为什么它在 matplotlib 中如此广泛传播)。

【问题讨论】:

  • 这可能来自来自其他编程语言的人。尾随分号在 Python 中是合法的,但(显然)不是必需的:它分隔语句。
  • @L3viathan 您注意到我链接了您声称我的问题与我的问题重复的问题?
  • 是的,我做到了!仍然是重复的;第一个答案非常准确。
  • 在 MATLAB 中它会阻止结果的显示。
  • 在 IPython 中,添加分号也会阻止打印返回值(在绘图的情况下,生成的绘图对象)。我有时也会在交互式会话中使用分号将多个语句链接到一行,这不是实际代码的推荐做法,但当你有一些指令要不断重用时它是实用的。除此之外,正如其他人所提到的,这可能只是另一种语言的习惯,但没有功能上的区别。

标签: python matplotlib


【解决方案1】:

正如linked question's answer 中所述,在纯 Python 中使用分号的唯一目的是在一行中分隔语句。

但是,在这里您会看到行尾的分号,这在纯 Python 中确实没有任何用途。

这里主要有两个原因:

  1. 正如commented by hpaulj,分号在 MATLAB 中使用,现在使用 Python、matplotlib 和相关包的人通常非常习惯于 MATLAB,因此可能会不小心输入这些。这就是分号意外出现在第三个案例(pyplot

     x = np.arange(0, 5, 0.1);
    

需要注意的是,这个链接引用了matplotlib文档中的旧版本,在current version中已经更正了。

  1. 更重要的是,当代码最初在 IPython 或Jupyter Notebooks 中使用时,您经常会看到使用分号。在这些情况下,分号就像在 MATLAB 中一样,用于防止从代码行输出。

因此它不一定与 matplotlib 相关,但反过来 matplotlib 经常在笔记本中以一种或另一种方式使用,并且笔记本很容易转换为 HTML,因此您经常在网站上找到源自此类笔记本的代码。这就是第一个和第二个示例中使用分号的原因。

【讨论】:

    【解决方案2】:

    来自帖子Silver BlogGold BlogData Visualization in Python: Matplotlib vs Seaborn

    一个方便的提示是,每当执行 matplotlib 时,输出将 始终包含在视觉上非常不吸引人的文本输出。至 解决这个问题,在最后一行代码的末尾添加一个分号 - ';' 执行代码块生成图形时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多