我想在ggplot图形中有两个不同的图例。 一个用于颜色渐变,另一个用于解释红色标记的点。
红色圆圈的图例应仅包含一行和单个文本。
我只能创建颜色渐变比例,而不能创建另一个:
public class testLogs {
protected static Logger logger;
private static void setupLogging(boolean useConsole) {
if (useConsole) {
ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder();
builder.setStatusLevel(Level.ERROR);
builder.setConfigurationName("BuilderTest");
builder.add(builder.newFilter("ThresholdFilter", Filter.Result.ACCEPT, Filter.Result.NEUTRAL)
.addAttribute("level", Level.DEBUG));
AppenderComponentBuilder appenderBuilder = builder.newAppender("Stdout", "CONSOLE").addAttribute("target",
ConsoleAppender.Target.SYSTEM_OUT);
appenderBuilder.add(builder.newLayout("PatternLayout")
.addAttribute("pattern", "%d [%t] %-5level: %msg%n%throwable"));
appenderBuilder.add(builder.newFilter("MarkerFilter", Filter.Result.DENY, Filter.Result.NEUTRAL)
.addAttribute("marker", "FLOW"));
builder.add(appenderBuilder);
builder.add(builder.newLogger("org.apache.logging.log4j", Level.DEBUG)
.add(builder.newAppenderRef("Stdout")).addAttribute("additivity", false));
builder.add(builder.newRootLogger(Level.ERROR).add(builder.newAppenderRef("Stdout")));
LoggerContext ctx = Configurator.initialize(builder.build());
ctx.updateLoggers();
} else {
// from https://stackoverflow.com/a/34969778/10863944
ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory
.newConfigurationBuilder();
builder.setStatusLevel(Level.ERROR);
builder.setConfigurationName("RollingBuilder");
// create the console appender
AppenderComponentBuilder appenderBuilder = builder.newAppender(
"Stdout", "CONSOLE").addAttribute("target",
ConsoleAppender.Target.SYSTEM_OUT);
appenderBuilder.add(builder.newLayout("PatternLayout").addAttribute(
"pattern", "%d [%t] %-5level: %msg%n%throwable"));
builder.add(appenderBuilder);
LayoutComponentBuilder layoutBuilder = builder.newLayout(
"PatternLayout").addAttribute("pattern",
"%d [%t] %-5level: %msg%n");
@SuppressWarnings("rawtypes")
ComponentBuilder triggeringPolicy = builder
.newComponent("Policies")
.addComponent(
builder.newComponent("CronTriggeringPolicy")
.addAttribute("schedule", "0 0 0 * * ?"))
.addComponent(
builder.newComponent("SizeBasedTriggeringPolicy")
.addAttribute("size", "100M"));
appenderBuilder = builder
.newAppender("rolling", "RollingFile")
.addAttribute("fileName", "logs/mylog.log")
.addAttribute("filePattern",
"logs/mylog-%d{MM-dd-yy}.log.gz").add(layoutBuilder)
.addComponent(triggeringPolicy);
builder.add(appenderBuilder);
// create the new logger
builder.add(builder.newLogger("TestLogger", Level.DEBUG)
.add(builder.newAppenderRef("rolling"))
.addAttribute("additivity", false));
builder.add(builder.newRootLogger(Level.DEBUG).add(
builder.newAppenderRef("rolling")));
LoggerContext ctx = Configurator.initialize(builder.build());
ctx.updateLoggers();
}
logger = LogManager.getLogger();
}
public static void main(String[] args) {
setupLogging(true); // use the console
logger.info("logging should be on the console");
setupLogging(false); // do not use the console
logger.info("logging should be in the log file");
}
}
答案 0 :(得分:1)
必须为aes()
分配scale_alpha()
。
library(ggplot2)
data <- data.frame(A = runif(10, 0, 10),
B = runif(10, 0, 10),
color = runif(10, 0, 10),
density = runif(10, 0, 10),
red = rep(1:5, each=2))
ggplot(data, aes(A, B, color = color, alpha = 1/density)) +
geom_point(shape = 16, size = 5, show.legend = T) +
geom_point(data = data[data$red == 1,],color="red",size=5, alpha = 0.7, show.legend = T) +
theme_minimal() +
theme(axis.text=element_text(size=12, family = 'serif'),
axis.title=element_text(size=16,face="bold", family = 'serif'),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black")) +
scale_color_gradient(low = "white", high = "black", name = "Scale", breaks = c(8,2), labels = c("max","min"))+
scale_alpha(range = c(.5, .7), aes(breaks = data$A[1], labels = c("1"))) +
scale_x_continuous(trans='log10', name = "A") +
scale_y_continuous(trans='log10', name = "B")