天道酬勤,学无止境

情节 + 朱莉娅 + 乳胶(Plotly + Julia + Latex)

问题

我想在 Plotly 后端使用乳胶。 看看这个例子:即使是 x 轴和 y 轴对数刻度也没有正确格式化! 你知道怎么做吗?

最好的事物,

v.

using Plots, LaTeXStrings
plotlyjs()
x =  10 .^ LinRange(-5,5,10)

plot(x, 1 ./ x, yaxis=:log, xaxis=:log, m = 2, xlabel="x", label="1/x",ylabel="f(x)")
plot!(x, 10 ./ x, m=2,label="10/x")
plot!(x, 1 ./ (x.^2), m=2, label=L"f(x)=$1/x^2$")
savefig("./test.png")

回答1

似乎与gr()后端一起使用,所以我希望plotlyjs()后端不支持plotlyjs()

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 在 knitr Latex 文档中缩放绘图图形(Scaling plotly figures in knitr Latex document)
    问题 我正在尝试使用 knitr 将绘图图表包含到 Latex 文档中。 由于 knitr 包含 webshot 包,因此效果很好。 但是,如果我想为乳胶输出调整图形的大小,图形环境会变大,但绘图图表不会被调用到手动设置的图形宽度和高度。 在这里指定像推荐这样的 webshot 选项也不起作用。 缩放 ggplot 图表效果很好,但是如何为 plotly 图表获得相同的结果? \documentclass{article} \usepackage{cleveref} <<setup, echo=FALSE, message = FALSE, warning = FALSE>>= library(ggplot2) library(plotly) @ %Preamble \title{GGplot vs. Plotly } \author{authors} \date{2016} \begin{document} \maketitle \section{Comparison ggplot with plotly} This document illustrate the difference between ggplot and plotly. The chart in (\Cref{fig:ggplot}) is well placed in the document, but
  • 如何更改朱莉娅图中刻度的精度(How to change the precision of ticks in julia plot)
    问题 我第一次在 julia 中绘图并安装了 Juno IDE。 我用 Plots.jl 绘图,每次绘图时,y 轴抽动都有很多小数。 我尝试了多个后端,如 GR、Plotly、PlotlyJS,但都没有改变我所看到的行为。 这是我目前产生结果的代码: using Plots gr() x = 1:10; y = rand(10) p = plot(x,y) 和输出的数字:https://github.com/bojohnson02/Random/blob/master/fig.pdf 回答1 这是由 Showoff 的一些更改引起的临时错误,Showoff 是 Plots 用来创建轴刻度的包。 它应该已经修复了,所以更新你的包应该可以工作( ]up )。 如果它还不起作用,并且您很着急,那么安装这两个包的master应该可以解决问题( ] add Plots#master然后是] add Showoff#master )。
  • Plotly + Julia + Latex
    I would like to use latex with the Plotly backend. Look in this example: Even the x-axis and y-axis log scales are not formatted properly! Do you know how to do that? Best, v. using Plots, LaTeXStrings plotlyjs() x = 10 .^ LinRange(-5,5,10) plot(x, 1 ./ x, yaxis=:log, xaxis=:log, m = 2, xlabel="x", label="1/x",ylabel="f(x)") plot!(x, 10 ./ x, m=2,label="10/x") plot!(x, 1 ./ (x.^2), m=2, label=L"f(x)=$1/x^2$") savefig("./test.png")
  • Matplotlib,使用乳胶的一致字体(Matplotlib, Consistent font using latex)
    问题 我的问题是我想在某些情节中使用乳胶标题,而在其他情节中不使用乳胶。 现在,matplotlib为Latex标题和非Latex标题提供了两种不同的默认字体,我希望两者保持一致。 是否有我必须更改的RC设置才能自动启用? 我使用以下代码生成图: import numpy as np from matplotlib import pyplot as plt tmpData = np.random.random( 300 ) ##Create a plot with a tex title ax = plt.subplot(211) plt.plot(np.arange(300), tmpData) plt.title(r'$W_y(\tau, j=3)$') plt.setp(ax.get_xticklabels(), visible = False) ##Create another plot without a tex title plt.subplot(212) plt.plot(np.arange(300), tmpData ) plt.title(r'Some random numbers') plt.show() 这是我正在谈论的不一致之处。 轴刻度标签相对于标题而言较薄。 回答1 为了使tex样式/文字文本看起来像普通文本
  • 字符串变量作为pyplot中的乳胶(string variable as latex in pyplot)
    问题 在 pyplot 图中可以使用 Latex 格式,即标题、标签等。 #some dummy code plt.plot(x,y,label = r"$a < \gamma$") 它是通过在实际乳胶字符串之前添加 r 生成的。 现在,pyplot 接受变量作为字符串的输入,即 #some dummy code foo = "some fancy label" plt.plot(x,y, label = foo) 我想将这两个世界结合起来,但是我在 SO 上找到的唯一答案是 Julia。 我怎样才能使这项工作? 回答1 该示例如下所示: foo = r"some fancy label and $a < \gamma$" plt.plot(x,y, label = foo) 添加r是它使字符串成为原始字符串(文字)。 这是必要的,因为\不是有效的字符串文字。 但是, \可以被另一个\转义,因此以下内容也有效 foo = "some fancy label and $a < \\gamma$" plt.plot(x,y, label = foo) 请注意,字符串前面没有r 。 另请注意,美元符号$实际上并不是在调用 Latex 而是所谓的 MathText。 为了获得真正的乳胶渲染,您需要有一个有效的乳胶安装并调用usetex=True参数; 详情在这里。
  • 在 Julia 中插入时如何格式化字符串?(How do you format a string when interpolated in Julia?)
    问题 在 Python 3 中,我会 print_me = "Look at this significant figure formatted number: {:.2f}!".format(floating_point_number) print(print_me) 或者 print_me = f"Look at this significant figure formatted number: {floating_point_number:.2f}!" print(print_me) 在朱莉娅 print_me = "Look at this significant figure formatted number: $floating_point_number" print(print_me) 但这会产生说 Look at this significant figure formatted number: 61.61616161616161 我如何让 Julia 限制它显示的小数位数? 请注意,据我所知,要打印的字符串的必要存储排除了使用@printf宏的@printf 。 这有效,但在风格上似乎不正确。 floating_point_number = round(floating_point_number,2) print_me = "Look at this
  • 从乳胶数学公式到大 jpeg 文件(From latex math formula to big jpeg file)
    问题 我想知道是否有人知道将乳胶数学公式转换为大 jpeg 文件的简单方法? 这是乳胶数学公式: \[ \lim_{u\rightarrow 0_+} \int_0^u \ud s \int_{-\infty}^\infty \frac{f(u-s,x-y)}{\sqrt{2\pi s}} \exp\left\{-\frac{y^2}{2s}\right\} \ud y \] 谢谢! 回答1 这根本与编程无关,但这里有一种方法可以做到这一点: 在您的 LaTeX 源文件中使用该类standalone 。 这将生成一个与所需大小完全相同的文档,但不会更大。 使用pdflatex生成 PDF 文件…… 使用convert (来自 ImageMagick)转换为 JPEG。 最小的例子: \documentclass{standalone} \begin{document} \[ \sum_{i=1}^n i \] \end{document} 以适当的分辨率convert : convert -density 400 file.pdf -scale 2000x1000 file.jpg 警告: standalone在确定文档大小方面存在一些问题。 我实际上不喜欢它产生的结果。 您可能需要手动加载geometry包并设置文档尺寸。 这需要一些摆弄,但结果要好得多。 回答2 看看这个
  • 朱莉娅:如何将数据复制到朱莉娅中的另一个处理器(Julia: How to copy data to another processor in Julia)
    问题 如何在Julia中将数据从一个处理器移动到另一个处理器? 说我有一个数组 a = [1:10] 或其他一些数据结构。 将其放在所有其他可用处理器上的正确方法是什么,以使其以相同的变量名在这些处理器上可用? 回答1 一开始我不知道该怎么做,所以我花了一些时间弄清楚它。 这是我为传递对象而编写的一些函数: sendto 将任意数量的变量发送到指定的进程。 在指定过程的主模块中创建新变量。 名称将是关键字参数的键,而值将是关联的值。 function sendto(p::Int; args...) for (nm, val) in args @spawnat(p, eval(Main, Expr(:(=), nm, val))) end end function sendto(ps::Vector{Int}; args...) for p in ps sendto(p; args...) end end 例子 # creates an integer x and Matrix y on processes 1 and 2 sendto([1, 2], x=100, y=rand(2, 3)) # create a variable here, then send it everywhere else z = randn(10, 10); sendto(workers(), z=z)
  • 朱莉娅 | 数据帧 | 替换缺失值(Julia | DataFrame | Replacing missing Values)
    问题 我们如何用0.0替换DataFrame的列的missing值? 回答1 这个问题有几种不同的方法(适用于 Julia 1.x): 基地。更换! 可能最简单的方法是使用replace! 或从基础 Julia replace 。 这是一个带有replace!的示例replace! : julia> using DataFrames julia> df = DataFrame(x = [1, missing, 3]) 3×1 DataFrame │ Row │ x │ │ │ Int64⍰ │ ├─────┼─────────┤ │ 1 │ 1 │ │ 2 │ missing │ │ 3 │ 3 │ julia> replace!(df.x, missing => 0); julia> df 3×1 DataFrame │ Row │ x │ │ │ Int64⍰ │ ├─────┼────────┤ │ 1 │ 1 │ │ 2 │ 0 │ │ 3 │ 3 │ 但是,请注意,此时列x的类型仍然允许缺失值: julia> typeof(df.x) Array{Union{Missing, Int64},1} 当打印出数据框时,这也由x列中Int64后面的问号表示。 您可以使用disallowmissing!更改此设置disallowmissing! (来自 DataFrames.jl
  • 朱莉娅:OOP 与否(Julia: OOP or not)
    问题 我正在和朱莉娅一起研究朱诺。 我不知道 Julia 是否支持 OOP。 例如,是否有类似 c++ 的class或struct之class东西? 如何使用数据或函数等成员声明它? 回答1 如有疑问,请阅读文档... https://docs.julialang.org/en/v1/manual/types/#Composite-Types-1 长话短说: struct MyType a::Int64 b::Float64 end x = MyType(3, 4) x.a 编辑:方法是在类型定义之外定义的,例如 function double(x::MyType) x.a *= 2 end 方法并不存在于类型中,例如它们在 C++ 或 Python 中存在。 这允许 Julia 的关键特性之一,多重分派,也可以与用户定义的类型一起使用,这些类型与系统定义的类型处于完全相同的级别。 回答2 Julia 并不是完全意义上的面向对象,因为您不能将方法附加到 Julia 的对象(“类型”)。 尽管这些类型看起来与对象非常相似。 但是,由于它们没有自己的关联方法并且没有继承,因此对象本身不执行操作。 相反,您拥有作用于对象的函数。 区别在于 ball.checkCollision() 与 checkCollision(ball,Walls)。 实际上,这没什么大不了的。
  • 如何在C ++中使用julia语言(Visual Studio)(how to use the julia language in c++ (visual studio))
    问题 是否可以在c ++中使用julia语言? 茱莉亚语言是否提供了一些要包括的图书馆? 现在,我正在尝试在我的c ++项目中使用julia语言的一些功能。 这有可能吗? 我能做什么? 提前致谢。 回答1 嵌入朱莉娅 是的,Julia可以嵌入到Julia本身可用的所有平台上的C或C ++程序中,并且在所有情况下通用方法都是相同的,但是特别是Windows中的嵌入变得更加困难,因为当前用于编译/嵌入的框架( gcc )不是该平台( MSVC )的默认默认熟悉版本。 原因是Julia是使用gcc而不是MSVC在Windows上构建的。 高水平 在较高层次上,嵌入Julia的步骤包括使用Julia发行版提供的资源进行编译(请参见下文),然后初始化程序以启动Julia引擎。 包括julia.h ac或c ++程序的所有必需定义都位于julia.h中。 每种发行版的确切位置都不同,但通常位于基于julia-basedir / include的目录中。 链接到libjulia 同样,嵌入Julia的所有必需符号都位于libjulia中。 在OS / X和Linux libjulia.so将在一般可用朱莉娅- BASEDIR /朱莉娅/ lib中,而在Windows libjulia.dll将朱莉娅- BASEDIR /朱莉娅/箱。 或可选地在0.4中:使用julia-config.jl
  • 朱莉娅,加快评估(Julia, speeding up eval)
    问题 Julia具有访问其自己的语法树的非常好的功能,这使得以编程方式轻松生成新函数变得容易,但是它比普通的Julia代码要慢得多。 例如: julia> timing = @time for i in [1:100] tan(pi/2*rand()); end elapsed time: 1.513e-5 seconds (896 bytes allocated) julia> timing = @time for i in [1:100] x = pi/2*rand(); eval(:(tan(x))); end elapsed time: 0.0080231 seconds (23296 bytes allocated) julia> timing = @time for i in [1:100] eval(:(tan(pi/2*rand()))); end elapsed time: 0.017245327 seconds (90496 bytes allocated) 有没有办法让eval达到与普通Julia代码相同的速度? 编辑:我能够使用precompile功能稍微加快评估速度,但这还不够: julia> tmp3 = :(sin(x)) :(sin(x)) julia> timing = @time for i in [1:100000] x = pi/2*rand
  • 朱莉娅语言真的如它声称的那样快吗?(Is the Julia language really as fast as it claims?)
    问题 在这篇文章发表之后,我决定将Julia对照GNU Octave进行基准测试,结果与julialang.org中说明的加速不一致。 我用CXXFLAGS='-std=c++11 -O3'编译了Julia和GNU Octave,得到的结果是: GNU八度 a=0.9999; tic;y=a.^(1:10000);toc Elapsed time is 0.000159025 seconds. tic;y=a.^(1:10000);toc Elapsed time is 0.000162125 seconds. tic;y=a.^(1:10000);toc Elapsed time is 0.000159979 seconds. -- tic;y=cumprod(ones(1,10000)*a);toc Elapsed time is 0.000280142 seconds. tic;y=cumprod(ones(1,10000)*a);toc Elapsed time is 0.000280142 seconds. tic;y=cumprod(ones(1,10000)*a);toc Elapsed time is 0.000277996 seconds. 茱莉亚(Julia) tic();y=a.^(1:10000);toc() elapsed time: 0
  • 朱莉娅是什么“符号”?(What is a “symbol” in Julia?)
    问题 具体来说:我正在尝试使用Julia的DataFrames包,特别是将readtable()函数与names选项一起使用,但这需要符号向量。 什么是符号? 他们为什么会选择一个字符串向量呢? 到目前为止,我只发现了少量的茱莉亚语中的“符号”一词的引用。 似乎符号用“:var”表示,但是我对它们的含义还很不清楚。 撇开:我可以跑步 df = readtable( "table.txt", names = [symbol("var1"), symbol("var2")] ) 我的两个项目符号问题仍然存在。 回答1 Julia中的符号与Lisp,Scheme或Ruby中的符号相同。 但是,我认为,对这些相关问题的回答并不十分令人满意。 如果您阅读了这些答案,似乎符号与字符串不同的原因是字符串是可变的,而符号是不可变的,符号也被“ interned”(无论如何)。 字符串在Ruby和Lisp中确实是可变的,但在Julia中却不是,并且实际上是红鲱鱼。 插入符号的事实(即,由语言实现进行哈希处理以进行快速相等比较)也是不相关的实现细节。 您可以实现不使用符号的实现,并且语言完全相同。 那么,什么是符号呢? 答案在于Julia和Lisp的共同点-能够将语言代码表示为语言本身的数据结构。 有些人称之为“同质性”(Wikipedia),但另一些人似乎并不认为单单就足以使一种语言具有同质性。
  • 朱莉娅是动态输入的吗?(Is Julia dynamically typed?)
    问题 许多博客和手册本身都说Julia是动态键入的。 但是,从我对手册的阅读中,听起来更像是使用类型推断(例如F#)静态键入的。 朱莉娅是否使用类型推断静态键入? 它是动态输入的吗? 我假设它是动态键入的,手册似乎不太可能是错误的。 朱莉娅完全涉及类型推断吗? 回答1 蒂姆·霍利(Tim Holy)的答案很正确,但我会详细说明。 首先,让我们定义一些术语–您可能不同意我的定义,但至少您会知道我在说什么。 在我看来,静态和动态语言之间的主要区别在于:在静态语言中,表达式具有类型;在静态语言中,表达式具有类型。 在动态语言中,值具有类型。 在静态语言中,有一些规则可以确定程序中每个表达式的类型。 表达式的类型决定了程序的行为。 不允许为每个表达式确定一致类型的程序被认为是错误的,将无法编译。 在存在多态性的情况下,表达式的类型可能不是单一的具体类型:参数多态性可以被认为是一种让相同代码描述整个具体类型化算法家族的方法,该算法由类型的参数索引; 可以将子类型多态性视为将有限数量的动态行为引入了其他静态语言中。 另一方面,动态语言没有为表达式分配类型的规则:数据在执行时流经程序的方式暗含了类型。 通常,表达式可能根本会产生任何类型的值。 因此,类型理论家有时将动态语言描述为“单型”-即从静态角度来看,“类型”本质上是表达式的属性,而动态语言中的所有表达式都具有Any类型。 当然
  • 朱莉娅:如何将符号表达式转换为函数?(Julia: how do I convert a symbolic expression to a function?)
    问题 我已经使用SymPy包(https://github.com/jverzani/SymPy.jl)创建了一个符号表达式。 我现在想使用Roots包(https://github.com/JuliaLang/Roots.jl)查找该表达式的根。 但是,我无法弄清楚如何使用fzeros方法查找根,因为该方法只能应用于Function类型而不是Sym (即我的表达式的类型)的对象。 这是我要做的事的一个例子。 我创建一个符号"x"和一个符号表达式sin(x) 。 现在让我们尝试在值-10和10之间找到sin(x)的零: using SymPy x = sym"x" expr = sin(x) using Roots fzeros(expr,-10,10) 这是错误: ERROR: `fzeros` has no method matching fzeros(::Sym, ::Int64, ::Int64) 如何将Sym类型的表达式转换为Function类型,以便找到根? 回答1 [更新:在许多情况下,以下讨论已被最近引入的lambdify函数所取代。 调用lambdify(expr)创建一个julia函数,该函数不会回调SymPy进行评估,因此应该更快。 它应该适用于大多数(当然不是全部)表达式。] 这是一个两步过程: convert(Function, expr) 在您的情况下
  • 朱莉娅:通过给定的字符串调用函数(Julia: invoke a function by a given string)
    问题 Julia是否像Java一样支持反射? 我需要的是这样的: str = ARGS[1] # str is a string # invoke the function str() 回答1 好方法 推荐的方法是将函数名称转换为符号,然后在适当的名称空间中查找该符号: julia> fn = "time" "time" julia> Symbol(fn) :time julia> getfield(Main, Symbol(fn)) time (generic function with 2 methods) julia> getfield(Main, Symbol(fn))() 1.448981716732318e9 您可以将Main更改为任何模块,仅查看该模块中的功能。 这使您可以限制仅该模块中可用的功能集。 您可以使用“裸模块”来创建仅具有填充其功能的名称空间,而无需默认情况下从Base导入所有名称。 坏路 一种不推荐使用的方法,但是很多人似乎首先会尝试达到这一目的,那就是为调用该函数的代码构造一个字符串,然后解析该字符串并对其求值。 例如: julia> eval(parse("$fn()")) # NOT RECOMMENDED 1.464877410113412e9 尽管这很简单,但不建议这样做,因为它速度慢,脆弱且危险。 与在模块中进行名称查找相比
  • 朱莉娅:添加软件包的问题(BinDeps)(Julia: Problems with Adding Packages (BinDeps))
    问题 我是Julia的软件包管理员的新手,我在安装GLPK和LinProgGLPK时遇到问题。 我已经运行了Pkg.Init()并使用Pkg.add("Curl")成功安装了Curl。 但是,当我尝试安装GLPK或LinProgGLPK(使用Pkg.add("GLPK")和Pkg.add("LinProgGLPK")) ,出现以下消息: MESSAGE: Installing BinDeps v0.0.0 ERROR: Path BinDeps already exists! Please remove to allow installation. in _resolve at pkg.jl:345 in anonymous at no file:163 in cd at file.jl:26 in cd_pkgdir at pkg.jl:42 in add at pkg.jl:143 in add at pkg.jl:175 对于依赖BinDeps的其他软件包(包括Winston),我似乎也得到了相同的消息。 我曾尝试调用Pkg.rm("BinDeps") , Pkg.add("BinDeps") , Pkg.update()和Pkg.resolve() ,然后返回尝试添加GLPK的消息,但该消息仍然存在。 我也输入了~/.julia来删除BinDeps文件夹,但是那也不起作用。
  • 朱莉娅:终端中的 print_with_color()(Julia: print_with_color() in terminal)
    问题 如果我的脚本run_this.jl包含以下单行代码: print_with_color(:green, "Hello") 我在终端中以julia run_this.jl运行脚本,它不会以彩色打印。 当我在终端中运行 julia 脚本时,有没有办法让这个函数工作? 回答1 您可以在调用 julia 脚本时使用 color 选项。 例如 julia --color=yes run_this.jl 这在 mac osx 和 linux 上对我有用。 不确定窗户。
  • 朱莉娅的向量化“输入”功能?(Vectorized “in” function in julia?)
    问题 我经常想遍历数据框的长数组或列,对于每个项目,看看它是否是另一个数组的成员。 而不是做 giant_list = ["a", "c", "j"] good_letters = ["a", "b"] isin = falses(size(giant_list,1)) for i=1:size(giant_list,1) isin[i] = giant_list[i] in good_letters end 在julia中有任何矢量化(双重矢量化?)方法吗? 与基本运算符类似,我想做类似的事情 isin = giant_list .in good_letters 我意识到这可能是不可能的,但我只是想确保自己没有遗漏任何东西。 我知道我可能可以使用DataStructures中的DefaultDict来执行类似操作,但不了解基础内容。 回答1 indexin函数的作用类似于您想要的: indexin(a, b) 返回包含在最高索引的矢量b的每个值在a即是其成员b 。 只要a不是b的成员,输出向量都包含0。 既然你要为你的每一个元素的布尔giant_list (而不是在指数good_letters ),你可以简单地这样做: julia> indexin(giant_list, good_letters) .> 0 3-element BitArray{1}: true false