图:用其值改变点的尺寸

时间:2019-06-21 10:30:35

标签: python matplotlib plot

下面,我创建了一个简单的数据集示例。我有4分,每一步都改变了他们的价值。这些点绘制在x,y位置,我希望它们的大小随其值而变化。还有另一个问题,每个点都由一条线连接,我不想要它。 (我不能使用plt.scatter)

import pandas as pd
import matplotlib.pyplot as plt

data=[[1,1,3],[1,2,1],[2,1,9],[2,2,0]]
a=pd.DataFrame(data)
a.columns=['x','y','value']

data2=[[1,1,5],[1,2,2],[2,1,1],[2,2,3]]
b=pd.DataFrame(data2)
b.columns=['x','y','value']

data3=[[1,1,15],[1,2,7],[2,1,4],[2,2,8]]
c=pd.DataFrame(data3)
c.columns=['x','y','value']

final=[a,b,c]

for i in range(0,len(final)):
    fig, ax = plt.subplots()
    plt.plot(final[i]['x'],final[i]['y'],marker='o',markersize=22)

通过此操作,我可以修复线条出现的尺寸,该如何删除呢? 如果我更改了标记大小,它将不起作用

for i in range(0,len(final)):
    fig, ax = plt.subplots()
    plt.plot(final[i]['x'],final[i]['y'],marker='o',markersize=final[i]['value'])

正如我之前所说,我想要的结果是抽搐中的情节不同,只有点的维数取决于它们的值

2 个答案:

答案 0 :(得分:0)

由于不能使用散点,因此您需要循环使用markersize的值,因为它不接受数组,而是标量。此外,仅绘制标记,就用'o'画一个圆。我使用size*5进一步扩大了圈子。

for i in range(0,len(final)):
    fig, ax = plt.subplots()
    for x, y, size in zip(final[i]['x'],final[i]['y'], final[i]['value']):
        plt.plot(x, y, 'o', markersize=size*5)

如果您想将它们绘制为子图

fig, axes = plt.subplots(1,3, figsize=(9, 2))

for i in range(0,len(final)):
    for x, y, size in zip(final[i]['x'],final[i]['y'], final[i]['value']):
        axes[i].plot(x, y, 'o', markersize=size*5)
plt.tight_layout()

enter image description here

答案 1 :(得分:0)

在plt.plot图形中有一个关于线宽的参数。请设置为零。

plt.plot(final[i]["x"], final[i]["y"], marker="o", markersize=22, linewidth=0)