我并不陌生matplotlib,我很惭愧地承认我一直将它作为一种工具,尽可能快速简便地获得解决方案.所以我知道如何获得基本情节,子图和东西,并且有不少代码可以不时重复使用......但我没有"深入(呃)知识" matplotlib.
最近我想我应该改变这个并通过一些教程自己动手.但是,我仍然对matplotlibs感到困惑plt,fig(ure)并且ax(arr).真正的区别是什么?
在大多数情况下,对于一些"quick'n'dirty"绘图,我看到人们只使用pyplot as plt和直接绘图plt.plot.由于我经常使用多种内容进行绘制,我经常使用f, axarr = plt.subplots()...但是大多数时候你只看到代码放置数据进入axarr并忽略了这个数字f.
所以,我的问题是:什么是使用matplotlib的干净方式?何时使用plt,应该使用什么或应该figure使用什么?子图是否只包含数据?或者,对于样式,清理情节,......,在子图中,它是否有效且良好的做法?
我希望这不是广泛的.基本上我要求为plt< - > fig< - > ax(arr)(以及何时/如何正确使用它们)的真正目的提出一些建议.
教程也是受欢迎的.matplotlib文档对我来说相当混乱.当人们搜索一些非常具体的东西时,比如重新标记一个图例,不同的情节标记和颜色等等,官方文档确实非常准确,但在我看来,一般信息并不是那么好.太多不同的例子,没有真正的目的解释......看起来或多或少像是所有可能的API方法和参数的大清单.
给定.fig文件中三条曲线的图表我想添加另一个图(带hold all和plot),但是将它放在已经存在的曲线之一(即确保最后一条原始曲线保持前景曲线).这可以在不必提取绘图数据和重新绘图的情况下实现吗?
在Latex中,我想在图形的图例中添加一个引用,如:
\begin{figure}
...
\caption{This is the legend of this figure (reprinted from \cite{something}).}
...
\end{figure}
Run Code Online (Sandbox Code Playgroud)
但引文不允许放在标题中,仅在文本中.我的参考书目正在研究文本的任何其他地方.
有什么建议怎么做?
谢谢
我有一个整页的数字,LaTeX因其大小而一直在最后.
我希望它集成在文本流的单独页面上.我该怎么做?
我知道有一个名为annotation的函数可以绘制箭头或双箭头.但是注释只能以标准化单位绘制.例如:
annotation('arrows',[x1 x2],[y1 y2])
Run Code Online (Sandbox Code Playgroud)
这里,[x1,x2]应该是小于1的比率数.
所以,我的问题是如何绘制具有真值而不是标准化值的箭头?
我想知道是否有任何其他功能可以接近这个或者是否有任何函数我可以得到图的轴值,以便我可以将真值调整为标准化值.
我正在尝试创建一个由2x2网格组成的图形,其中每个象限中有2个垂直堆叠的子图(即2x1网格).但我似乎无法弄清楚如何实现这一目标.
我得到的最接近的是使用gridspec和一些丑陋的代码(见下文),但是因为gridspec.update(hspace=X)改变了所有子图的间距,我仍然不是我想要的.
理想情况下,我想要的是,使用下面的图片作为示例,减少每个象限内的子图之间的间距,同时增加顶部和底部象限之间的垂直间距(即1-3和2-4之间).
有没有办法做到这一点(使用或不使用gridspec)?我最初想象的是生成每个子子图网格(即每个2x1网格)并将它们插入更大的2x2子图网格中,但我还没想出如何将子图添加到子图中,如果有偶数的话一种方式.
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
plt.figure(figsize=(10, 8))
gs = gridspec.GridSpec(4,2)
gs.update(hspace=0.4)
for i in range(2):
for j in range(4):
ax = plt.subplot(gs[j,i])
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.tick_params(which='both', top='off', right='off')
if j % 2 == 0:
ax.set_title(str(i+j+1))
ax.plot([1,2,3], [1,2,3])
ax.spines['bottom'].set_visible(False)
ax.get_xaxis().set_visible(False)
else:
ax.plot([1,2,3], [3,2,1])
Run Code Online (Sandbox Code Playgroud) 我知道这是非常基础的,但我是MATLAB的新手.打开.fig文件后,如何在命令窗口中实际使用绘制的数据?我只看到情节.我不确定如何实际获取数据.
我试图在RMarkdown文档中插入一个数字,但我很难让它出现在正确的位置.下图显示了问题:使用数字标题时,图形显示在页面顶部而不是文档中相关段落的下方.
以下是此最低工作示例的代码:
---
title: "Untitled"
author: "Author"
date: "27 February 2017"
output:
pdf_document:
fig_cap: yes
keep_tex: yes
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, fig.pos= "h")
```
## R Markdown
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.
\newpage
## Including Plots
You can also embed plots, for example:
```{r pressure, echo=FALSE, fig.cap = "Hello"}
plot(pressure)
```
Note that …Run Code Online (Sandbox Code Playgroud) 我在matplotlib中创建了一个图形,其中包含三个子图,一个在左上象限,一个在右上象限,一个在右下象限.右上图包含一个二维图像,另外两个图分别是Y轴和X轴上的投影.我想将左上象限子图逆时针旋转90度,使得该图的x轴位于2-d图的y轴上.
对于子图,我意识到我可以翻转x和y数据,旋转轴标签,在左侧创建一个情节标题,等等.但我希望找到一个单独的调用,它可以旋转整个完成的绘图通过90deg.但我找不到一个.
有一个简单的方法吗?