在 HighCharts 散点图中,我想使用平滑的动画将一个点从其位置移动到另一个位置。例如,在以下代码定义的散点图中(jfiddle链接):
$(function () {
var chart;
$(document).ready(function() {
chart = new Highcharts.Chart({
chart: {
renderTo: 'container'
},
xAxis: {
min: -0.5,
max: 5.5
},
yAxis: {
min: 0
},
title: {
text: 'Scatter plot with regression line'
},
series: [{
type: 'scatter',
name: 'Observations',
data: [[1, 1.5], [2.8, 3.5], [3.9, 4.2]],
marker: {
radius: 4
}
}]
});
});
});
Run Code Online (Sandbox Code Playgroud)
我想将第一个点从 (1,1.5) 移动到 (2,2)。是否可以?
我尝试编写一个简单的脚本,它更新每个时间步的散点图t。我想做得尽可能简单。但它所做的只是打开一扇我什么也看不见的窗户。窗户就结冰了。这可能只是一个小错误,但我找不到它。
的data.dat格式为
x y
Timestep 1 1 2
3 1
Timestep 2 6 3
2 1
Run Code Online (Sandbox Code Playgroud)
(该文件仅包含数字)
import numpy as np
import matplotlib.pyplot as plt
import time
# Load particle positioins
with open('//home//user//data.dat', 'r') as fp:
particles = []
for line in fp:
line = line.split()
if line:
line = [float(i) for i in line]
particles.append(line)
T = 100
numbParticles = 2
x, y = np.array([]), np.array([])
plt.ion()
plt.figure()
plt.scatter(x,y)
for t in range(T):
plt.clf()
for …Run Code Online (Sandbox Code Playgroud) 我正在使用 Plotly 的散点图来可视化多个数据集。
这是我的代码的一部分。下面,我创建了 scatterpolo 实例:
go.Scatterpolar(
r=[dataset_dataframe['word_count'].median(),
dataset_dataframe['char_count'].median(),
dataset_dataframe['capitals'].median(),
dataset_dataframe['num_exclamation_marks'].median(),
dataset_dataframe['num_punctuation'].median()],
name=dataset_name,
theta=['No. of Words', 'No. of Characters', 'No. of Capitals', 'No. of Exclamation Marks', 'No. of Punctuations'],
fill='toself',
line=dict(color='brown'),
subplot=subplot_name),
)
Run Code Online (Sandbox Code Playgroud)
我在这里将其放入布局中:
fig.update_layout(
polar=dict(
radialaxis=dict(visible=True, )),
title='Dataset Statistics')
Run Code Online (Sandbox Code Playgroud)
我对多个数据框执行此操作,这使我可以轻松比较它们。结果很简洁,如下所示:
不幸的是,似乎 的范围theta是使用每个散点实例的最大值自动计算的r。
这不好,因为为了轻松比较数据集,我需要theta所有绘图都处于相同的范围内。
问题:如何将 的范围设置theta为自定义值,例如从 1 到 100?
我有两对 x 和 y 值,一对绘制为线图(蓝色),另一对绘制为散点图(红色)。这些点重叠,并且蓝色实线绘制在红点之上,导致仅红点的非重叠部分可见。我希望这是相反的:我希望红点全部位于蓝线之上,以便红点全部完全可见,而蓝线在重叠点处被遮挡。对于如何做到这一点有什么建议吗?
import numpy as np
import matplotlib.pyplot as plt
x1 = np.linspace(0,10,20)
x2 = np.linspace(0,10,500)
y1 = np.sin(x1)
y2 = np.sin(x2)
plt.plot(x2,y2, color = 'b')
plt.scatter(x1,y1,marker = 'o', s = 6, color = 'r')
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用 seaborn 散点图在数据框中绘制前 30% 的值,如下所示。
同一图的可重现代码:
import seaborn as sns
df = sns.load_dataset('iris')
#function to return top 30 percent values in a dataframe.
def extract_top(df):
n = int(0.3*len(df))
top = df.sort_values('sepal_length', ascending = False).head(n)
return top
#storing the top values
top = extract_top(df)
#plotting
sns.scatterplot(data = top,
x='species', y='sepal_length',
color = 'black',
s = 100,
marker = 'x',)
Run Code Online (Sandbox Code Playgroud)
在这里,我想对 x 轴进行排序order = ['virginica','setosa','versicolor']。当我尝试order用作 中的参数之一时sns.scatterplot(),它返回了一个错误AttributeError: 'PathCollection' object has no property 'order'。正确的做法是什么?
请注意:在数据框中,setosa …
散点图对象有一个名为 .set_color 的方法来更新标记的颜色,并使用 .set_offsets 来更新其位置,但如何更新标记形状?
我想在我的点上绘制一个更大尺寸的图表,我已经尝试过sizes=100但它不起作用,
这是代码:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
data = np.array([[1, 3, 'weekday'], [2, 2.5, 'weekday'],[3, 2.7, 'weekend'], [4, 2.8, 'weekend'], [5, 3, 'weekday'], [6, 3.1, 'weekday'], [7, 3, 'weekday'], [8, 3.1, 'weekday'], [9, 3.1, 'weekday'], [10, 3.1, 'weekend']])
# Creating a data frame with the raw data
dataset = pd.DataFrame(data, columns=['day', 'miles_walked', 'day_category'])
ax = sns.scatterplot(x='day', y='miles_walked', data=dataset, hue='day_category',sizes=100)
# Customize the axes and title
ax.set_title("Miles walked") …Run Code Online (Sandbox Code Playgroud) 我想知道如何使颜色条上的刻度显示为 log2。
import matplotlib.pyplot as plt
from matplotlib import ticker
x = np.arange(1000)
y = x.copy()
c = x.copy()
scatter_plot = plt.scatter(x, y, c=c, cmap='viridis', norm=matplotlib.colors.LogNorm())
formatter = ticker.LogFormatter(2)
cbar = plt.colorbar(scatter_plot, format=formatter)
plt.show()
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,有一些额外的刻度,但它没有正确应用它们。我希望刻度显示为 log2。任何帮助表示赞赏。
我正在使用 ggpubr 包中的 ggscatter 绘制两个连续变量之间的相关图。我使用的是肯德尔等级系数,p 值自动添加到图表中。我想使用scale_y_log10(),因为其中一个测量值存在很大的差异。然而,在代码中添加scale_y_log10()会影响p值。
样本数据:
sampledata <- structure(list(ID = c(1, 2, 3, 4, 5), Measure1 = c(10, 10, 50, 0, 100), Measure2 = c(5, 3, 40, 30, 20), timepoint = c(1, 1,1, 1, 1), time = structure(c(18628, 19205, 19236, 19205, 19205), class = "Date"), event = c(1, 1, NA, NA, NA), eventdate = structure(c(18779,19024, NA, NA, NA), class = "Date")), row.names = c(NA, -5L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)
没有scale_y_log10()的图
ggscatter(data = sampledata, x = "Measure2", y = "Measure1",
add …Run Code Online (Sandbox Code Playgroud) 目前所有点都已标记。如果我只想标记该图中的特定点,而不是所有点,我该如何实现这一点?我想删除所有其他标签,但保留“Herens”、“Payerne”、“Orbe”、“Val de Ruz”、“Lavaux”的标签
data("swiss")
head(swiss)
library(magrittr)
library(dplyr)
library(ggpubr)
# Cmpute MDS
mds <- swiss %>%
dist() %>%
cmdscale() %>%
as_tibble()
colnames(mds) <- c("Dim.1", "Dim.2")
# Plot MDS
ggscatter(mds, x = "Dim.1", y = "Dim.2",
label = rownames(swiss),
size = 1,
repel = TRUE)
Run Code Online (Sandbox Code Playgroud)
电流输出
scatter-plot ×10
python ×6
matplotlib ×5
animation ×2
pandas ×2
r ×2
seaborn ×2
ggplot2 ×1
ggpubr ×1
highcharts ×1
marker ×1
p-value ×1
plot ×1
plotly ×1