标签: plot

如何在绘图中仅显示特定曲线子集的图例?

t = 0 : 0.01 : 2 * pi;
s = sin(t);
c = cos(t);
m = -sin(t);

hold on;
plot(t, s, 'r');
plot(t, c, 'b');
plot(t, m, 'g');
hold off;

legend('', 'cosine', '');
Run Code Online (Sandbox Code Playgroud)

绘图

我的绘图中有几条曲线.我想只为其中一些人展示传奇.我该怎么做?

例如,如何在上面的绘图中仅显示余弦曲线的图例?当我调用legend()函数legend('', 'cosine');而不是添加空的第三个参数时,确实从图例中删除了第三个绿线.但这并没有解决我的问题,因为不需要的红线保持可见.

matlab plot legend

38
推荐指数
3
解决办法
5万
查看次数

使用grid.arrange指定图的宽度和高度

我有三个图,我尝试将它们与grid.arrange结合起来.最后一个图的高度应小于前两个图,所有图的宽度应相同.

一个工作的例子:

p1 <- qplot(mpg, wt, data=mtcars)
p2 <- p1
p3 <- p1 + theme(axis.text.y=element_blank(), axis.title.y=element_blank())

grid.arrange(arrangeGrob(p1,p2, ncol=1, nrow=2),
         arrangeGrob(p3, ncol=1, nrow=1), heights=c(4,1)) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这里,最后一个图的宽度大于前两个图.在我的真实数据中,即使我将文本和标题保留在y轴上,我仍然有第三个图的不同宽度.

我试图添加"宽度":

 grid.arrange(arrangeGrob(p1,p2, ncol=1, nrow=2),
         arrangeGrob(p3, ncol=1, nrow=1), heights=c(4,1), widths=c(2,1))
Run Code Online (Sandbox Code Playgroud)

但它变成了两列情节......

在此输入图像描述

我还尝试了另一个代码:

p1 <- ggplotGrob(p1)
p2 <- ggplotGrob(p2)
p3 <- ggplotGrob(p3)
# 
stripT <- subset(p2$layout, grepl("spacer", p2$layout$name))
p3 <- p3[-stripT$t, ]

grid.draw(rbind(p1, p2, p3, size = "first")) 
Run Code Online (Sandbox Code Playgroud)

我有相同的宽度,但现在我不知道如何改变高度......

在此输入图像描述

那么,有人可以帮助我将高度和宽度方面结合起来进行最终的情节吗?

plot r ggplot2 gridextra

38
推荐指数
2
解决办法
5万
查看次数

更改R图的背景颜色

好吧,假设我有以下情节.

df = data.frame(date=c(rep(2008:2013, by=1)),
                value=c(303,407,538,696,881,1094))

barplot(df$value, main="TITLE", col="gray", ylab="People", xlab="Years")
Run Code Online (Sandbox Code Playgroud)

如何将背景更改为深蓝色?

我知道这可以用ggplot2,但不知道我是否可以用基本图形做到这一点.

plot r

37
推荐指数
2
解决办法
8万
查看次数

使用Pandas在同一图中绘制分组数据

在熊猫,我正在做:

bp = p_df.groupby('class').plot(kind='kde')
Run Code Online (Sandbox Code Playgroud)

p_df是一个dataframe对象.

然而,这产生了两个图,每个类一个.如何在同一个图中强制同时使用两个类的一个图?

python plot pandas

37
推荐指数
5
解决办法
6万
查看次数

修改pandas条形图的图例

当我用熊猫制作条形图时我总是很烦,我想更改图例中标签的名称.例如考虑这段代码的输出:

import pandas as pd
from matplotlib.pyplot import *

df = pd.DataFrame({'A':26, 'B':20}, index=['N'])
df.plot(kind='bar')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 现在,如果我想更改图例中的名称,我通常会尝试:

legend(['AAA', 'BBB'])
Run Code Online (Sandbox Code Playgroud)

但我最终得到了这个:

在此输入图像描述

实际上,第一个虚线似乎对应于另一个补丁.

所以我想知道是否有一个简单的技巧来更改标签,或者我是否需要使用matplotlib独立绘制每个列并自己设置标签.谢谢.

python plot matplotlib pandas

37
推荐指数
3
解决办法
6万
查看次数

R图中的网格

是否有命令可以轻松地将网格添加到R图上?

plot r

36
推荐指数
4
解决办法
6万
查看次数

R中的Streamgraph?

R中是否有任何Streamgraph实现?

Streamgraphs是叠加图形的变体,是Havre等人的ThemeRiver在选择基线,图层排序和颜色选择方面的改进.

例:

在此输入图像描述

参考:http://www.leebyron.com/else/streamgraph/

plot visualization r stream-graph

36
推荐指数
5
解决办法
8330
查看次数

制作一个带有空心圆形的圆形条形图(又名赛道图)

我被要求重新创建以下风格的情节.(请忽略这是否是一种良好的可视化类型的问题,并将此视为在数字表中添加彩色元素.)

大部分都很简单,但我还没有找到一个让中心空洞的好方法.为了节省时间,我可能会采用添加隐形虚拟数据的方法(如果没有其他人这样做,我会发布该方法,但它似乎不如修改主题的方法更优化).是否有基于主题的解决方案或非ggplot2 R解决方案?

我们在模仿的是什么

在此输入图像描述

简单的ggplot2结果(不需要的填充中心)

library(ggplot2)

# make sample dataframe

Category <- c("Electronics", "Appliances", "Books", "Music", "Clothing", 
            "Cars", "Food/Beverages", "Personal Hygiene", 
            "Personal Health/OTC", "Hair Care")
Percent <- c(81, 77, 70, 69, 69, 68, 62, 62, 61, 60)

internetImportance<-data.frame(Category,Percent)

# append number to category name
internetImportance$Category <-
     paste0(internetImportance$Category," - ",internetImportance$Percent,"%")

# set factor so it will plot in descending order 
internetImportance$Category <-
    factor(internetImportance$Category, 
    levels=rev(internetImportance$Category))

# plot

ggplot(internetImportance, aes(x = Category, y = Percent,
    fill = Category)) + 
    geom_bar(width = 0.9, stat="identity") …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2

36
推荐指数
3
解决办法
3796
查看次数

将面板边框添加到ggplot2

我被要求在下面的情节周围放置一个完整的边框:

在此输入图像描述

使用panel.border = element_rect(colour = "black")结果在图中丢失变成空白.

我无法使用,theme_bw()因为它没有与通常主题相同的功能,我目前使用的代码如下:

graph<-ggplot(d,aes(x=d$AOE, y=d$MEI)
            )+
  geom_point(shape=20, size=3)+
  geom_rug()+
  annotate("text", x = -1.1, y = 14000, label = "27/04/2011") +
  annotate("text", x = -1.3, y = 10400, label = "03/04/1974") +
  xlab("MEI")+
  ylab("AOE")+
  scale_y_log10()+
  theme(axis.text.y   = element_text(size=14),
        axis.text.x   = element_text(size=14),
        axis.title.y  = element_text(size=14),
        axis.title.x  = element_text(size=14),
        panel.background = element_blank(),
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        axis.line = element_line(colour = "black")
  )

graph 
Run Code Online (Sandbox Code Playgroud)

任何关于如何获得全黑边框的建议将非常感谢!

plot r ggplot2

36
推荐指数
3
解决办法
6万
查看次数

如何测试函数的图形输出?

我想知道如何测试生成图形的函数.我有一个简单的绘图功能img:

img <- function() {
  plot(1:10)
}
Run Code Online (Sandbox Code Playgroud)

在我的包中,我喜欢使用这个函数创建一个单元测试testthat.因为plot和它的朋友在基础图形只是返回NULL一个简单 expect_identical的不工作:

library("testthat")

## example for a successful test
expect_identical(plot(1:10), img()) ## equal (as expected)

## example for a test failure
expect_identical(plot(1:10, col="red"), img()) ## DOES NOT FAIL!
# (because both return NULL)
Run Code Online (Sandbox Code Playgroud)

首先,我考虑绘制到文件中并比较md5校验和以确保函数的输出相等:

md5plot <- function(expr) {
  file <- tempfile(fileext=".pdf")
  on.exit(unlink(file))
  pdf(file)
  expr
  dev.off()
  unname(tools::md5sum(file))
}

## example for a successful test
expect_identical(md5plot(img()),
                 md5plot(plot(1:10))) ## equal (as expected)

## example for …
Run Code Online (Sandbox Code Playgroud)

testing graphics plot r testthat

36
推荐指数
2
解决办法
2507
查看次数