本文将分享在IPythonNotebook中自动内联运行%matplotlib的详细内容,并且还将对ipythonnotebook如何运行进行详尽解释,此外,我们还将为大家带来关于ipython-no
本文将分享在IPython Notebook中自动内联运行%matplotlib的详细内容,并且还将对ipython notebook如何运行进行详尽解释,此外,我们还将为大家带来关于ipython-notebook – 如何在不启动内核的情况下使用Ipython Notebook / Jupyter打开笔记本?、java版matplotlib,matplotlib4j使用,java中调用matplotlib或者其他python脚本、jupyter notebook 中,使用 matplotlib 绘制动态图形显示问题?、jupyter-notebook 中 matplotlib 不支持中文的问题 (Linux)的相关知识,希望对你有所帮助。
本文目录一览:- 在IPython Notebook中自动内联运行%matplotlib(ipython notebook如何运行)
- ipython-notebook – 如何在不启动内核的情况下使用Ipython Notebook / Jupyter打开笔记本?
- java版matplotlib,matplotlib4j使用,java中调用matplotlib或者其他python脚本
- jupyter notebook 中,使用 matplotlib 绘制动态图形显示问题?
- jupyter-notebook 中 matplotlib 不支持中文的问题 (Linux)
在IPython Notebook中自动内联运行%matplotlib(ipython notebook如何运行)
每次启动IPython Notebook时,我运行的第一个命令是
%matplotlib inline
有什么方法可以更改我的配置文件,以便在启动IPython时自动处于此模式?
ipython-notebook – 如何在不启动内核的情况下使用Ipython Notebook / Jupyter打开笔记本?
可能的用例:
>我只想从以前的计算中输出笔记本.我不想做进一步的计算.
>我想快速浏览一下,而不是等待内核启动.
根据我的理解,所有LaTeX渲染,JavaScript和CSS应该独立于内核工作.它应该告诉我,内核没有连接.然后我可以决定通过菜单启动内核.
我没有在任何地方找到这个记录.
我不想使用nbviewer,因为我希望它能够在我正常的Jupyter工作流程中尽可能地集成.
解决方法
所以我想你只需要手动编辑.ipynb文件(或编写一个脚本来完成这个)并将全局元数据字段更改为这样的东西来实现你的目标:
"Metadata": { "kernelspec": { "display_name": "bogus","language": "bogus","name": "bogus" },"language_info": { "codemirror_mode": "<don''t change this>","mimetype": "text/plain","name": "bogus" } }
这只是部分解决方法,但它似乎适用于所有情况.您仍需要在系统中使用正确的codemirror配置.
另一种方法是编写一个什么都不做的小内核(比如“Echo Kernel”),但这样效率会低一些,因为你仍然需要一种指定不同语法高亮模式的方法(除非你打算编写IPython笔记本) .
java版matplotlib,matplotlib4j使用,java中调用matplotlib或者其他python脚本
写在前面,最近需要在java中调用matplotlib,其他一些画图包都没这个好,毕竟python在科学计算有优势。找到了matplotlib4j,大概看了下github上的https://github.com/sh0nk/matplotlib4j,maven repository:
<dependency>
<groupId>com.github.sh0nk</groupId>
<artifactId>matplotlib4j</artifactId>
<version>0.5.0</version>
</dependency>
简单贴个测试类,更多的用法在test报下有个MainTest.class。
@Test
public void testPlot() throws IOException, PythonExecutionException, ClassNotFoundException, NoSuchMethodException, illegalaccessexception, InvocationTargetException, InstantiationException {
Plot plot = Plot.create(PythonConfig.pythonBinPathConfig("D:\\python3.6\\python.exe"));
plt.plot()
.add(Arrays.asList(1.3, 2))
.label("label")
.linestyle("--");
plt.xlabel("xlabel");
plt.ylabel("ylabel");
plt.text(0.5, 0.2, "text");
plt.title("Title!");
plt.legend();
plt.show();
}
下面问题来了,这个对matplotlib的封装不是很全面,源码里也有很多todo,有很多函数简单用用还行,很多重载用不了,比如plt.plot(xdata,ydata)可以,但是无法在其中指定字体plt.plot(xdata,ydata,fontsize=30);
所以想要更全面的用法还得自己动手,几种办法:
- 大部分还是用matplotlib4j中的,个别的自己需要的但里头没有的函数,实现他的builder接口,重写build方法,返回一个py文件中命令行的字符串形式,然后反射取到PlotImpl中的成员变量registeredBuilders,往后追加命令行,感觉适用于只有极个别命令找不到的情况,挺麻烦的,而且要是传nd.array(…)这种参数还得额外拼字符串。
//拿到plotImpl中用于组装python脚本语句的的registeredBuilders,需要加什么直接添加新的builder就行了
Field registeredBuildersField = plt.getClass().getDeclaredField("registeredBuilders");
registeredBuildersField.setAccessible(true);
List<Builder> registeredBuilders = (List<Builder>) registeredBuildersField.get(plt);
TicksBuilder ticksBuilder = new TicksBuilder(yList, "yticks", fontSize);
registeredBuilders.add(ticksBuilder);
- 这种比较直接,参照matplotlib4j底层,直接写py.exe文件,执行命令行,比较推荐这种,一行一行脚本自己写,数据拼装方便,看起来直观。比如写如下的脚本并执行,搞两组数据,画个散点图
import numpy as np
import matplotlib.pyplot as plt
plt.plot(np.array(自己的x数据), np.array(自己的y数据), 'k.', markersize=4)
plt.xlim(0,6000)
plt.ylim(0,24)
plt.yticks(np.arange(0, 25, 1), fontsize=10)
plt.title("waterfall")
plt.show()
像下面这么写就行了
//1. 准备自己的数据 不用管
List<Float> y_secondList_formatByHours = y_secondList.stream().map(second -> (float)second / 3600).collect(Collectors.toList());
//2.准备命令行list,逐行命令添加
List<String> scriptLines = new ArrayList<>();
scriptLines.add("import numpy as np");
scriptLines.add("import matplotlib.pyplot as plt");
scriptLines.add("plt.plot("+"np.array("+x_positionList+"),"+"np.array(" +y_secondList_formatByHours+"),\"k.\",label=\"waterfall\",lw=1.0,markersize=4)");
scriptLines.add("plt.xlim(0,6000)");
scriptLines.add("plt.ylim(0,24)");
scriptLines.add("plt.yticks(np.arange(0, 25, 1), fontsize=10)");
scriptLines.add("plt.title(\"waterfall\")");
scriptLines.add("plt.show()");
//3. 调用matplotlib4j 里面的pycommond对象,传入自己电脑的python路径
pycommand command = new pycommand(PythonConfig.pythonBinPathConfig("D:\\python3.6\\python.exe"));
//4. 执行,每次执行会生成临时文件 如C:\Users\ADMINI~1\AppData\Local\Temp\1623292234356-0\exec.py,这个带的日志输出能看到,搞定
command.execute(Joiner.on('\n').join(scriptLines));
jupyter notebook 中,使用 matplotlib 绘制动态图形显示问题?
# 以下为sin动图代码,在python中能正常显示动图,而在jupyter中显示不出来
# 即便是加了 %matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
%matplotlib inline
fig, ax = plt.subplots()
xdata, ydata = [], []
ln, = ax.plot([], [], ''r-'', animated=False)
def init():
ax.set_xlim(0, 2*np.pi)
ax.set_ylim(-1, 1)
return ln,
def update(frame):
xdata.append(frame)
ydata.append(np.sin(frame))
ln.set_data(xdata, ydata)
return ln,
ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128),
init_func=init, blit=True)
plt.show()
jupyter-notebook 中 matplotlib 不支持中文的问题 (Linux)
前言:问题就不截图了,jupyter-notebook 中,使用 plt 画出的图像,中文都是小方格 (乱码) 解决方法如下
1. Linux 安装字体
把 Windows 的字体 C:/Windows/Fonts
复制到 Linux 系统的存放字体路径 /usr/share/fonts
下,如图: cd 到
/usr/share/fonts/Fonts
, 也就是拷贝来的文件夹,建立字体索引信息,更新字体缓存,让字体生效,运行命令: mkfontscale && mkfontdir && fc-cache -fv && source /etc/profile && fc-list |wc -l
查看字体 fc-list :lang=zh
2. 添加配置
这里有很多版本,比如:
import matplotlib
matplotlib.use(''qt4agg'')
#指定默认字体
matplotlib.rcParams[''font.sans-serif''] = [''SimHei'']
matplotlib.rcParams[''font.family'']=''sans-serif'' #解决负号''-''显示为方块的问题
matplotlib.rcParams[''axes.unicode_minus''] = False
我的设置是:
from pylab import mpl
mpl.rcParams[''font.sans-serif''] = [''STSong'']
mpl.rcParams[''axes.unicode_minus''] = False
如图,可以正常显示中文了
3. 如果还不行,清除缓存
如果添加了第二部的配置,但还是显示中文乱码,那么有可能是缓存的问题,执行 rm -r ~/.cache/matplotlib
关于在IPython Notebook中自动内联运行%matplotlib和ipython notebook如何运行的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ipython-notebook – 如何在不启动内核的情况下使用Ipython Notebook / Jupyter打开笔记本?、java版matplotlib,matplotlib4j使用,java中调用matplotlib或者其他python脚本、jupyter notebook 中,使用 matplotlib 绘制动态图形显示问题?、jupyter-notebook 中 matplotlib 不支持中文的问题 (Linux)等相关知识的信息别忘了在本站进行查找喔。
本文标签: