我在剧情中制作的每一张图都看起来很棒,直到我保存它的那一刻,所以图像看起来有点哑光,如果它有意义,那就是非常糟糕的质量。有谁知道如何以高品质保存它?您可以使用此基本图表作为示例。
library(plotly)
x <- c(1:100)
random_y <- rnorm(100, mean = 0)
data <- data.frame(x, random_y)
p <- plot_ly(data, x = ~x, y = ~random_y, type = 'scatter', mode = 'lines')
谢谢!
答案 0 :(得分:5)
至少在最新的Plotly v4.7.1中,您可以将图形导出为SVG(因为它是矢量图形格式,这可能是最高质量的)。
为此,您需要安装包import java.util.Random;
import java.util.Scanner;
public class questionFive
{
public static void main(String[] args)
{
int [] numbers = new int [5];
Scanner keyboard = new Scanner (System.in);
Random rand = new Random();
int delete;
for (int i= 0; i < numbers.length; i++)
{
System.out.print("Enter in your values for the array: ");
numbers[i] = keyboard.nextInt();
}
for(int val : numbers)
{
System.out.println("The next value is " +
val);
}
System.out.println("What element would you like to delete?");
delete = keyboard.nextInt();
for (int i = 0; i < 9; i++)
{
numbers[i] = delete;
System.out.println(i);
}
while (delete <=5){
System.out.println("Invalid element. Try again.");
delete = keyboard.nextInt();
// numbers[delete];
}
}
}
。然后您可以使用Plotly的Rselenium
函数,如下所示(在此示例中使用Chrome作为Selenium driver):
export
这会将图表if ( !require(RSelenium) ) {
install.packages("RSelenium", repos = "https://cloud.r-project.org/")
}
p %>%
export(file = "filename.svg",
selenium = RSelenium::rsDriver(browser = "chrome"))
下载到您的默认下载目录(许多Linux发行版上的filename.svg
或Windows上的~/Downloads
)。如果你想将SVG下载到当前的R工作目录,你需要将几个选项传递给Selenium驱动程序(本例中为Chrome):
%USERPROFILE%\Downloads
可以在此要点中找到更复杂的自定义导出功能,该功能允许设置导出的SVG的宽度和高度(以及更多包括可选的PDF和PNG转换):https://gist.github.com/salim-b/32c4370cee4ac0a3fbfef13a9ce98458
答案 1 :(得分:0)
如果像我一样,您尝试在离线模式下使用Plotly,我建议您执行以下步骤:
首先,保存为SVG:
fname = "/home/me/output"
plot(fig, filename=fname, image='svg', image_filename=fname)
然后在您的浏览器中打开HTML(名为output.html
),它会提示您保存SVG(这是一个令人沮丧的步骤,但目前没有办法解决它与Plotly)。
然后,使用cairosvg将SVG转换为PNG,使用更好的缩放。在这里看到我的其他答案。 Can I specify scaling when using the cairosvg module inside of python
答案 2 :(得分:0)
@Peter Gaultney提供的答案为我的盒子图制作了一个错误。
这两种方法可能适用于更多情况并提高图像质量using htmlwidgets::onRender().
选项1.正如@ chinsoon12建议的那样,保存为SVG。此代码将打开Web浏览器,然后使浏览器下载图像。请注意,将查看器设置为null将阻止RStudio查看器窗格工作,因此您需要保存它,保存绘图图像,并then restore it.
library(htmlwidgets)
# Save viewer settings (e.g. RStudio viewer pane)
op <- options()
# Set viewer to web browser
options(viewer = NULL)
# Use web browser to save image
p %>% htmlwidgets::onRender(
"function(el, x) {
var gd = document.getElementById(el.id);
Plotly.downloadImage(gd, {format: 'svg', width: 600, height: 800, filename: 'plot'});
}"
)
# Restore viewer to old setting (e.g. RStudio)
options(viewer = op$viewer)
选项2.您可以另存为PNG并指定更高的分辨率。您应该增加此方法的线条粗细,字体等。
library(htmlwidgets)
# Save viewer settings (e.g. RStudio viewer pane)
op <- options()
# Set viewer to web browser
options(viewer = NULL)
# Use web browser to save image
p %>% htmlwidgets::onRender(
"function(el, x) {
var gd = document.getElementById(el.id);
Plotly.downloadImage(gd, {format: 'png', width: 1200, height: 1600, filename: 'plot'});
}"
)
# Restore viewer to old setting (e.g. RStudio)
options(viewer = op$viewer)
答案 3 :(得分:-1)
如果你深入了解情节js库,你会找到一个&#34; scale&#34;参数,这很容易使用。以下将产生1200 x 1600 png。
<div class="articlecontainer">
<ol>
<li>Item 1</li>
<li>Item 2</li>
<ol>
<li>Sub-item 1</li>
<li>Sub-item 2</li>
<li>Sub-item 3</li>
</ol>
<li>Item 3</li>
</ol>
</div>