我正在编写一个脚本来为两个维度上的散点图数据制作热图.以下是我想要做的一个玩具示例:
import numpy as np
from matplotlib.pyplot import*
x = [1,2,3,4,5]
y = [1,2,3,4,5]
heatmap, xedges, yedges = np.histogram2d(x, y, bins=50)
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]]
imshow(heatmap, extent = extent)
Run Code Online (Sandbox Code Playgroud)
我应该期望"最温暖的"区域沿着y = x但是它们沿着y = -x + 5出现,即热图在反方向上读取一个列表.我不确定为什么会这样.有什么建议?
谢谢
有谁知道如何创建一个散点图R,以创建像图这些在PRISM的的GraphPad:

我尝试使用箱形图,但它们不按我想要的方式显示数据.graphpad可以生成的这些列散点图可以更好地显示数据.
任何建议,将不胜感激.
我有一个all看起来像这样的数据框:
现在我想创建一个散点图,其中x轴的列标题和相应的值作为数据点.例如:
7| x
6| x x
5| x x x x
4| x x x
3| x x
2| x x
1|
---------------------------------------
STM STM STM PIC PIC PIC
cold normal hot cold normal hot
Run Code Online (Sandbox Code Playgroud)
这应该很容易,但我无法弄清楚如何.
问候
我有一个带有许多点的散点图.每个点都有一个与之相关的字符串(长度不一样),我想提供一个标签,但我不能适应它们.所以我想迭代我的数据点从最重要到最不重要,并且在每种情况下仅在标签不与现有标签重叠时才应用标签.琴弦长度不一.其中一位评论者提到解决背包问题以找到最佳解决方案.在我的情况下,贪心算法(总是标记可以被标记而没有重叠的最重要的剩余点)将是一个良好的开端并且可能就足够了.
这是一个玩具的例子.我可以让Python只标记尽可能多的点而不重叠吗?
import matplotlib.pylab as plt, numpy as np
npoints = 100
xs = np.random.rand(npoints)
ys = np.random.rand(npoints)
plt.scatter(xs, ys)
labels = iter(dir(np))
for x, y, in zip(xs, ys):
# Ideally I'd condition the next line on whether or not the new label would overlap with an existing one
plt.annotate(labels.next(), xy = (x, y))
plt.show()
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用ggplot2在R中制作散点图,其中y轴的中间被折叠或移除,因为那里没有数据.我在下面的photoshop中做过,但有没有办法用ggplot创建类似的情节?这是具有连续比例的数据:
这是代码:
ggplot(data=distance_data) +
geom_point(
aes(
x = mdistance,
y = maxZ,
shape = factor(subj),
color = factor(side),
size = (cSA)
)
) +
scale_size_continuous(range = c(4, 10)) +
theme(
axis.text.x = element_text(colour = "black", size = 15),
axis.text.y = element_text(colour = "black", size = 15),
axis.title.x = element_text(colour = "black", size= 20, vjust = 0),
axis.title.y = element_text(colour = "black", size= 20),
legend.position = "none"
) +
ylab("Z-score") +
xlab("Distance")
Run Code Online (Sandbox Code Playgroud) 我有一些玩具数据的散点图。
我想在给定点旁边绘制一个带有该点颜色的标签。
玩具示例:
x = 100*np.random.rand(5,1)
y = 100*np.random.rand(5,1)
c = np.random.rand(5,1)
fig, ax = plt.subplots()
sc = plt.scatter(x, y, c=c, cmap='viridis')
# I want to annotate the third point (idx=2)
idx = 2
ax.annotate("hello", xy=(x[idx],y[idx]), color='green',
xytext=(5,5), textcoords="offset points")
plt.show()
Run Code Online (Sandbox Code Playgroud)
我需要以某种方式获得这一点的颜色,并改变我的color='green'部分color=color_of_the_point
如何获得散点图中点的颜色?
颜色矢量c将转换为颜色图,并且还可以进行其他修改,例如归一化或alpha值。
SC拥有访问点的坐标的方法:
sc.get_offsets()
Run Code Online (Sandbox Code Playgroud)
因此,也有一种获取点颜色的方法是合乎逻辑的,但我找不到这种方法。
我是新来的,仍在学习 R,所以我正在处理一个错误。
这是我从控制台得到的信息
不知道如何自动选择 Haven_labelled/vctrs_vctr/double 类型的对象的比例。默认为连续。
我不知道我能做些什么来让它发挥作用。我想得到一个散点图。
ggplot(data = diagnoza, aes(x = Plecc, y = P32.01))
Run Code Online (Sandbox Code Playgroud)
不知道如何自动选择 Haven_labelled/vctrs_vctr/double 类型的对象的比例。默认为连续。
我对 sns 线图和散点图有问题。基本上我想做的是连接散点图的点以呈现连接映射点的最近线。当面对具有相同 x 轴值的点时,线图会以某种方式改变宽度。我希望线图始终保持相同的实线。
代码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
data = {'X': [13, 13, 13, 12, 11], 'Y':[14, 11, 13, 15, 20], 'NumberOfPlanets':[2, 5, 2, 1, 2]}
cts = pd.DataFrame(data=data)
plt.figure(figsize=(10,10))
sns.scatterplot(data=cts, x='X', y='Y', size='NumberOfPlanets', sizes=(50,500), legend=False)
sns.lineplot(data=cts, x='X', y='Y',estimator='max', color='red')
plt.show()
Run Code Online (Sandbox Code Playgroud)
结果:
有任何想法吗?
编辑:
如果我尝试使用 pyplot 它也不起作用:代码:
plt.plot(cts['X'], cts['Y'])
Run Code Online (Sandbox Code Playgroud)
结果:
我需要一条线,它连接最近的点(基本上是图像一上显示的,但具有相同的实线)。
我正在寻找一种方法,以响应线条角度的方式为 matplotlib 中的线条图指定颜色。这是我当前的代码:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
horz = [[0.5,0.6,0.8],[0.1,0.8,0.9],[0.2,0.5,0.9]]
vert = [[0.1,0.2,0.3],[0.05,0.1,0.15],[0.2,0.3,0.35]]
f = plt.figure(figsize=(6,6))
ax = plt.axes()
for column in range(0,len(horz)):
x = np.array(horz[column])
y = np.array(vert[column])
#LINEAR TRENDLINE
z = np.polyfit(horz[column], vert[column], 1)
p = np.poly1d(z)
ax.plot(horz[column],p(horz[column]),"-")
plt.arrow(x=horz[column][-2],y=p(horz[column])[-2],dx=(horz[column][-1]-horz[column][-2]),dy=(p(horz[column])[-1]-p(horz[column])[-2]), shape='full', lw=.01,
length_includes_head=True, head_width=.012, head_length=0.02, head_starts_at_zero=False, overhang = 0.5)
#FIG SETTINGS
plt.xlim([0, 1])
plt.ylim([0.1,0.5])
ax.set_title('Title',
fontsize = 14)
Run Code Online (Sandbox Code Playgroud)
这里的想法是,如果线的角度为 0 度,则它将位于给定梯度的一端,如果线的角度为 90 度,则位于另一端。此外,我希望将线条长度视为颜色的强度。因此,如果线条短,它会更接近白色,如果线条长,它会更接近渐变的原始颜色。